From a7c87e67a00a73907b1171910983a2a73c4d333f Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 21 Mar 2022 01:58:29 +0100 Subject: [PATCH] BREAKING CHANGE: ESM, JS bindings, triple equals and general cleanup (#2157) --- .eslintignore | 3 +- .eslintrc.js => .eslintrc.cjs | 12 +- .gitattributes | 3 +- .github/workflows/publish.yml | 2 + .github/workflows/test.yml | 114 +- .gitignore | 9 +- CODE_OF_CONDUCT.md | 46 - README.md | 19 +- bin/asc | 20 - bin/asc.js | 33 + bin/{asinit => asinit.js} | 308 +- cli/README.md | 59 +- cli/asc.js | 1532 - cli/{asc.d.ts => index.d.ts} | 193 +- cli/index.js | 1263 + cli/{asc.json => options.json} | 104 +- cli/shim/README.md | 1 - cli/shim/fs.js | 1 - cli/shim/path.js | 531 - cli/transform.d.ts | 43 - cli/transform.js | 7 - cli/tsconfig.json | 6 + cli/util/colors.d.ts | 55 - cli/util/colors.js | 35 - cli/util/find.d.ts | 6 - cli/util/mkdirp.d.ts | 10 - cli/util/mkdirp.js | 62 - cli/util/utf8.d.ts | 29 - cli/util/utf8.js | 110 - index.d.ts | 2 - index.js | 11 - index.release.d.ts | 2 - index.release.js | 1 - lib/README.md | 14 + lib/binaryen.d.ts | 2 + lib/binaryen.js | 2 + lib/loader/README.md | 317 +- lib/loader/index.d.ts | 3 - lib/loader/package.json | 4 +- lib/loader/tests/build/default.wasm | Bin 12096 -> 7810 bytes lib/loader/tests/build/legacy.wasm | Bin 12096 -> 7810 bytes lib/loader/tests/index.html | 20 +- lib/loader/tests/index.js | 21 +- lib/parse/README.md | 107 - lib/parse/assembly/index.ts | 406 - lib/parse/assembly/options.ts | 20 - lib/parse/assembly/tsconfig.json | 6 - lib/parse/build/.gitignore | 2 - lib/parse/build/index.wat | 932 - lib/parse/index.d.ts | 1 - lib/parse/index.js | 2 - lib/parse/index.js.map | 1 - lib/parse/package.json | 30 - lib/parse/src/common.ts | 225 - lib/parse/src/index.ts | 165 - lib/parse/tests/index.ts | 121 - lib/parse/tests/libm.wasm | Bin 10175 -> 0 bytes lib/parse/webpack.config.js | 36 - lib/rtrace/README.md | 6 +- lib/rtrace/tlsfvis.html | 4 +- lib/sdk/README.md | 38 - lib/sdk/index.js | 35 - lib/sdk/tests/index.html | 20 - lib/webpack/README.md | 14 - lib/webpack/decode.js | 26 - lib/webpack/index.js | 57 - lib/webpack/package.json | 9 - package-lock.json | 3281 +- package.json | 132 +- scripts/README.md | 21 + scripts/build-diagnostics.js | 42 - scripts/build-dts.js | 237 +- scripts/build-sdk.js | 14 - scripts/build-web.js | 53 + scripts/build.js | 279 +- scripts/clean.js | 16 - scripts/postpublish-files.json | 5 - scripts/postpublish.js | 22 - scripts/prepublish.js | 97 +- scripts/update-constants.js | 18 +- snap/README.md | 3 - snap/snapcraft.yaml | 25 - src/README.md | 25 +- src/asconfig.json | 46 +- src/ast.ts | 64 +- src/bindings.ts | 11 + src/bindings/js.ts | 1321 + src/bindings/tsd.ts | 387 + src/bindings/util.ts | 198 + src/builtins.ts | 149 +- src/common.ts | 3 + src/compiler.ts | 407 +- src/definitions.ts | 687 - src/diagnosticMessages.generated.ts | 383 - src/diagnosticMessages.json | 4 +- src/diagnostics.ts | 8 +- src/extra/ast.ts | 121 +- src/flow.ts | 185 +- src/glue/binaryen.d.ts | 6 +- src/glue/binaryen.js | 634 +- src/glue/js/collections.js | 6 +- src/glue/js/float.js | 8 +- src/glue/js/i64.js | 86 +- src/index-js.ts | 19 + src/index-wasm.ts | 357 + src/index.ts | 293 +- src/module.ts | 131 +- src/parser.ts | 68 +- src/program.ts | 102 +- src/resolver.ts | 48 +- src/tsconfig.json | 5 +- src/types.ts | 16 +- src/util.ts | 12 + src/util/index.ts | 12 - src/util/text.ts | 106 + std/assembly/array.ts | 6 +- std/assembly/arraybuffer.ts | 2 +- std/assembly/bindings/Date.ts | 1 - std/assembly/bindings/Math.ts | 44 - std/assembly/bindings/Reflect.ts | 4 - std/assembly/bindings/console.ts | 10 - std/assembly/bindings/dom.ts | 162 + std/assembly/bindings/node.ts | 6 + std/assembly/builtins.ts | 3 + std/assembly/console.ts | 133 +- std/assembly/crypto.ts | 12 +- std/assembly/date.ts | 4 +- std/assembly/index.d.ts | 31 +- std/assembly/map.ts | 2 +- std/assembly/math.ts | 2 +- std/assembly/object.ts | 4 +- std/assembly/performance.ts | 22 + std/assembly/process.ts | 123 +- std/assembly/set.ts | 2 +- std/assembly/shared/feature.ts | 8 +- std/assembly/staticarray.ts | 4 +- std/assembly/string.ts | 22 +- std/assembly/symbol.ts | 4 +- std/assembly/util/hash.ts | 2 +- std/assembly/util/memory.ts | 2 +- std/assembly/util/sort.ts | 2 +- std/assembly/util/string.ts | 13 +- std/assembly/wasi/index.ts | 4 +- std/portable/index.js | 4 +- tests/README.md | 7 +- tests/allocators/default/assembly/index.ts | 12 +- tests/allocators/default/debug.wat | 1476 + tests/allocators/default/package.json | 7 +- tests/allocators/default/release.wat | 771 + tests/allocators/default/untouched.wat | 2904 - tests/allocators/forever.js | 2 +- tests/allocators/index.js | 20 +- tests/allocators/package.json | 1 + tests/allocators/runner.js | 10 +- tests/allocators/stub/assembly/index.ts | 16 +- tests/allocators/stub/debug.wat | 220 + tests/allocators/stub/optimized.wat | 367 - tests/allocators/stub/package.json | 7 +- tests/allocators/stub/release.wat | 130 + tests/allocators/stub/untouched.wat | 1566 - tests/asconfig/complicated/asconfig.json | 4 +- tests/asconfig/complicated/package.json | 2 +- tests/asconfig/cyclical/package.json | 2 +- .../asconfig/entry-points/nested/package.json | 2 +- .../entry-points/node-resolution/package.json | 2 +- tests/asconfig/entry-points/package.json | 2 +- tests/asconfig/extends/package.json | 2 +- tests/asconfig/index.js | 110 +- tests/asconfig/package.json | 1 + .../asconfig/respect-inheritence/package.json | 2 +- tests/asconfig/target/package.json | 2 +- tests/asconfig/use-consts/package.json | 2 +- tests/binaryen/asmjs-math-builtins.js | 45 - tests/binaryen/asmjs.wat | 24 - tests/binaryen/block-pre.js | 26 - tests/binaryen/block-stack.js | 19 - tests/binaryen/break-value.js | 24 - tests/binaryen/const-expr.js | 29 - tests/binaryen/const-expr.wat | 19 - tests/binaryen/const-global.js | 18 - tests/binaryen/const-global.wat | 8 - tests/binaryen/const-local.js | 18 - tests/binaryen/constant-indirect-arg.js | 26 - tests/binaryen/constant-indirect.js | 22 - tests/binaryen/get_global-missing.js | 17 - tests/binaryen/get_local-missing.js | 19 - tests/binaryen/i64-binary-result.js | 18 - tests/binaryen/inline-export.js | 39 - tests/binaryen/libm.html | 22 - tests/binaryen/multi-value.js | 15 - tests/binaryen/optimize-if-eqz.js | 19 - tests/binaryen/optimize-if-eqz.wat | 14 - tests/binaryen/precompute-join.wat | 20 - tests/binaryen/reloop.js | 71 - tests/binaryen/return-flatten.js | 19 - tests/binaryen/set_global-immutable.js | 16 - tests/binaryen/unreachable-loop.js | 23 - tests/binaryen/unreachable-loop.wat | 11 - tests/binaryen/unreachable-spam.js | 25 - tests/browser-asc.js | 83 - tests/browser.js | 65 + tests/cli/options.js | 8 +- tests/compiler.js | 618 +- tests/compiler/.gitignore | 1 + ...le.untouched.wat => NonNullable.debug.wat} | 50 +- ....optimized.wat => NonNullable.release.wat} | 216 +- ...ype.untouched.wat => ReturnType.debug.wat} | 0 ...e.optimized.wat => ReturnType.release.wat} | 0 .../{abi.untouched.wat => abi.debug.wat} | 0 .../{abi.optimized.wat => abi.release.wat} | 0 tests/compiler/asc-constants.debug.wat | 85 + ...ptimized.wat => asc-constants.release.wat} | 0 tests/compiler/asc-constants.ts | 3 + tests/compiler/asc-constants.untouched.wat | 76 - ...untouched.wat => assert-nonnull.debug.wat} | 0 ...timized.wat => assert-nonnull.release.wat} | 0 ...{assert.untouched.wat => assert.debug.wat} | 0 ...ssert.optimized.wat => assert.release.wat} | 0 tests/compiler/bigint-integration.debug.wat | 59 + ...t-integration.js => bigint-integration.js} | 11 +- tests/compiler/bigint-integration.json | 5 + tests/compiler/bigint-integration.release.wat | 50 + ...t-integration.ts => bigint-integration.ts} | 0 ...{binary.untouched.wat => binary.debug.wat} | 4 +- ...inary.optimized.wat => binary.release.wat} | 71 +- tests/compiler/bindings/esm.debug.d.ts | 154 + tests/compiler/bindings/esm.debug.js | 379 + tests/compiler/bindings/esm.debug.wat | 4215 ++ tests/compiler/bindings/esm.js | 70 + tests/compiler/bindings/esm.json | 10 + tests/compiler/bindings/esm.release.d.ts | 154 + tests/compiler/bindings/esm.release.js | 379 + .../esm.release.wat} | 3306 +- tests/compiler/bindings/esm.ts | 138 + tests/compiler/bindings/raw.debug.d.ts | 160 + tests/compiler/bindings/raw.debug.js | 353 + tests/compiler/bindings/raw.debug.wat | 4218 ++ tests/compiler/bindings/raw.js | 6 + tests/compiler/bindings/raw.json | 10 + tests/compiler/bindings/raw.release.d.ts | 160 + tests/compiler/bindings/raw.release.js | 353 + tests/compiler/bindings/raw.release.wat | 3333 + tests/compiler/bindings/raw.ts | 1 + .../{bool.untouched.wat => bool.debug.wat} | 0 .../{bool.optimized.wat => bool.release.wat} | 0 ...ltins.untouched.wat => builtins.debug.wat} | 10 +- ...ins.optimized.wat => builtins.release.wat} | 4 +- ....untouched.wat => call-inferred.debug.wat} | 0 ...ptimized.wat => call-inferred.release.wat} | 0 ....untouched.wat => call-optional.debug.wat} | 0 ...ptimized.wat => call-optional.release.wat} | 0 ...per.untouched.wat => call-super.debug.wat} | 238 +- ...r.optimized.wat => call-super.release.wat} | 233 +- .../{cast.untouched.wat => cast.debug.wat} | 0 .../{cast.optimized.wat => cast.release.wat} | 0 ....untouched.wat => class-extends.debug.wat} | 0 ...ptimized.wat => class-extends.release.wat} | 0 tests/compiler/class-implements.debug.wat | 2372 + tests/compiler/class-implements.optimized.wat | 1705 - tests/compiler/class-implements.release.wat | 1570 + tests/compiler/class-implements.ts | 8 +- tests/compiler/class-implements.untouched.wat | 2688 - ...d.wat => class-overloading-cast.debug.wat} | 239 +- tests/compiler/class-overloading-cast.json | 2 +- ...wat => class-overloading-cast.release.wat} | 5 + ...ouched.wat => class-overloading.debug.wat} | 237 +- tests/compiler/class-overloading.json | 2 +- ...ized.wat => class-overloading.release.wat} | 10 +- ...ed.wat => class-static-function.debug.wat} | 0 ....wat => class-static-function.release.wat} | 0 .../{class.untouched.wat => class.debug.wat} | 238 +- ...{class.optimized.wat => class.release.wat} | 269 +- .../{comma.untouched.wat => comma.debug.wat} | 0 ...{comma.optimized.wat => comma.release.wat} | 0 ....untouched.wat => const-folding.debug.wat} | 0 ...ptimized.wat => const-folding.release.wat} | 0 ...or.untouched.wat => constructor.debug.wat} | 238 +- ....optimized.wat => constructor.release.wat} | 251 +- ...tinue.untouched.wat => continue.debug.wat} | 0 ...nue.optimized.wat => continue.release.wat} | 0 ...verge.untouched.wat => converge.debug.wat} | 0 ...rge.optimized.wat => converge.release.wat} | 0 ...eclare.untouched.wat => declare.debug.wat} | 0 tests/compiler/declare.js | 4 +- ...lare.optimized.wat => declare.release.wat} | 0 .../{do.untouched.wat => do.debug.wat} | 238 +- .../{do.optimized.wat => do.release.wat} | 6 +- tests/compiler/duplicate-field-errors.ts | 6 +- ...touched.wat => duplicate-fields.debug.wat} | 387 +- ...mized.wat => duplicate-fields.release.wat} | 460 +- tests/compiler/duplicate-fields.ts | 6 +- ...ched.wat => empty-exportruntime.debug.wat} | 238 +- ...ed.wat => empty-exportruntime.release.wat} | 233 +- ...-new.untouched.wat => empty-new.debug.wat} | 238 +- ...ew.optimized.wat => empty-new.release.wat} | 6 + .../{empty.untouched.wat => empty.debug.wat} | 0 ...{empty.optimized.wat => empty.release.wat} | 0 .../{enum.untouched.wat => enum.debug.wat} | 0 .../{enum.optimized.wat => enum.release.wat} | 0 ...untouched.wat => export-default.debug.wat} | 0 ...timized.wat => export-default.release.wat} | 0 tests/compiler/export-generic.json | 17 - tests/compiler/export-generic.ts | 14 - ...{export.untouched.wat => export.debug.wat} | 9 - ...tstar.optimized.wat => export.release.wat} | 6 - ...uched.wat => exportimport-table.debug.wat} | 0 tests/compiler/exportimport-table.js | 4 +- ...zed.wat => exportimport-table.release.wat} | 0 ...y.untouched.wat => exports-lazy.debug.wat} | 13 +- ...optimized.wat => exports-lazy.release.wat} | 6 + tests/compiler/exports.debug.wat | 65 + tests/compiler/exports.optimized.wat | 1763 - tests/compiler/exports.release.wat | 47 + tests/compiler/exports.untouched.wat | 2875 - ...ed.wat => exportstar-rereexport.debug.wat} | 255 +- ....wat => exportstar-rereexport.release.wat} | 52 +- ...tar.untouched.wat => exportstar.debug.wat} | 9 - ...t.optimized.wat => exportstar.release.wat} | 6 - ...ed.wat => extends-baseaggregate.debug.wat} | 974 +- .../extends-baseaggregate.release.wat | 1916 + .../extends-baseaggregate.untouched.wat | 4241 -- tests/compiler/extends-recursive.debug.wat | 2365 + .../compiler/extends-recursive.optimized.wat | 1659 - tests/compiler/extends-recursive.release.wat | 1496 + tests/compiler/extends-recursive.ts | 4 +- .../compiler/extends-recursive.untouched.wat | 2658 - ...ernal.untouched.wat => external.debug.wat} | 2 - tests/compiler/external.js | 4 +- ...nal.optimized.wat => external.release.wat} | 2 - tests/compiler/external.ts | 3 - tests/compiler/features/README.md | 2 +- .../exception-handling.debug.wat} | 0 .../compiler/features/exception-handling.json | 5 + .../exception-handling.release.wat} | 0 tests/compiler/features/exception-handling.ts | 1 + .../{gc.untouched.wat => gc.debug.wat} | 0 tests/compiler/features/gc.json | 2 +- .../{gc.optimized.wat => gc.release.wat} | 0 .../features/js-bigint-integration.json | 8 - .../js-bigint-integration.optimized.wat | 50 - .../js-bigint-integration.untouched.wat | 59 - tests/compiler/features/mutable-globals.json | 8 - .../features/mutable-globals.untouched.wat | 86 - tests/compiler/features/nontrapping-f2i.json | 8 - tests/compiler/features/not-supported.json | 1 + ...ntouched.wat => reference-types.debug.wat} | 82 +- tests/compiler/features/reference-types.js | 4 +- tests/compiler/features/reference-types.json | 1 - ...imized.wat => reference-types.release.wat} | 56 +- tests/compiler/features/reference-types.ts | 25 +- ...hreads.untouched.wat => threads.debug.wat} | 2 +- ...eads.optimized.wat => threads.release.wat} | 0 ...hed.wat => field-initialization.debug.wat} | 256 +- ...d.wat => field-initialization.release.wat} | 272 +- tests/compiler/field.debug.wat | 2546 + tests/compiler/field.optimized.wat | 2848 - ...setter.optimized.wat => field.release.wat} | 756 +- tests/compiler/field.untouched.wat | 4031 -- .../{for.untouched.wat => for.debug.wat} | 238 +- .../{for.optimized.wat => for.release.wat} | 6 +- ....untouched.wat => function-call.debug.wat} | 238 +- ...ptimized.wat => function-call.release.wat} | 5 + ...ched.wat => function-expression.debug.wat} | 236 +- ...ed.wat => function-expression.release.wat} | 49 +- ... => function-inline-regressions.debug.wat} | 0 ...> function-inline-regressions.release.wat} | 0 ...untouched.wat => function-types.debug.wat} | 0 ...timized.wat => function-types.release.wat} | 0 tests/compiler/function.untouched.wat | 141 - ...ll.untouched.wat => getter-call.debug.wat} | 238 +- ....optimized.wat => getter-call.release.wat} | 6 +- ....untouched.wat => getter-setter.debug.wat} | 0 ...ptimized.wat => getter-setter.release.wat} | 0 ...in-return.untouched.wat => heap.debug.wat} | 1038 +- tests/compiler/heap.optimized.wat | 2044 - .../heap.release.wat} | 950 +- tests/compiler/heap.ts | 2 - tests/compiler/heap.untouched.wat | 2897 - .../{if.untouched.wat => if.debug.wat} | 0 .../{if.optimized.wat => if.release.wat} | 0 tests/compiler/implicit-getter-setter.js | 34 - tests/compiler/implicit-getter-setter.json | 2 - tests/compiler/implicit-getter-setter.ts | 7 - ...{import.untouched.wat => import.debug.wat} | 0 ...mport.optimized.wat => import.release.wat} | 0 ...ntouched.wat => indexof-valueof.debug.wat} | 0 ...imized.wat => indexof-valueof.release.wat} | 0 ...ay.untouched.wat => infer-array.debug.wat} | 1869 +- ....optimized.wat => infer-array.release.wat} | 1724 +- ....untouched.wat => infer-generic.debug.wat} | 238 +- ...ptimized.wat => infer-generic.release.wat} | 79 +- ...ype.untouched.wat => infer-type.debug.wat} | 0 ...e.optimized.wat => infer-type.release.wat} | 0 ...hed.wat => inlining-blocklocals.debug.wat} | 0 ...d.wat => inlining-blocklocals.release.wat} | 0 ...uched.wat => inlining-recursive.debug.wat} | 0 ...zed.wat => inlining-recursive.release.wat} | 0 ...ining.untouched.wat => inlining.debug.wat} | 238 +- ...ing.optimized.wat => inlining.release.wat} | 233 +- ...touched.wat => instanceof-class.debug.wat} | 236 +- ...mized.wat => instanceof-class.release.wat} | 5 + ...eof.untouched.wat => instanceof.debug.wat} | 0 ...f.optimized.wat => instanceof.release.wat} | 0 tests/compiler/instanceof.ts | 2 +- .../{1095.untouched.wat => 1095.debug.wat} | 236 +- .../{1095.optimized.wat => 1095.release.wat} | 27 +- .../{1225.untouched.wat => 1225.debug.wat} | 238 +- .../{1225.optimized.wat => 1225.release.wat} | 206 +- tests/compiler/issues/1225.ts | 4 +- tests/compiler/issues/1699.debug.wat | 2843 + tests/compiler/issues/1699.release.wat | 2094 + tests/compiler/issues/1699.ts | 4 +- tests/compiler/issues/1699.untouched.wat | 4328 -- tests/compiler/issues/1714.debug.wat | 264 + tests/compiler/issues/1714.optimized.wat | 8 - tests/compiler/issues/1714.release.wat | 45 + tests/compiler/issues/1714.ts | 2 +- tests/compiler/issues/1714.untouched.wat | 66 - .../1751.debug.wat} | 0 .../{1751.optimized.wat => 1751.release.wat} | 0 .../{2166.untouched.wat => 2166.debug.wat} | 239 +- .../{2166.optimized.wat => 2166.release.wat} | 8 +- ...{limits.untouched.wat => limits.debug.wat} | 0 ...imits.optimized.wat => limits.release.wat} | 0 ...erals.untouched.wat => literals.debug.wat} | 0 ...als.optimized.wat => literals.release.wat} | 0 ...ogical.untouched.wat => logical.debug.wat} | 238 +- ...ical.optimized.wat => logical.release.wat} | 6 +- ...flow.untouched.wat => loop-flow.debug.wat} | 0 ...ow.optimized.wat => loop-flow.release.wat} | 0 ...wrap.untouched.wat => loop-wrap.debug.wat} | 0 ...ap.optimized.wat => loop-wrap.release.wat} | 0 ...t.untouched.wat => managed-cast.debug.wat} | 236 +- ...optimized.wat => managed-cast.release.wat} | 5 + ...ls.untouched.wat => many-locals.debug.wat} | 0 ....optimized.wat => many-locals.release.wat} | 0 ...{memcpy.untouched.wat => memcpy.debug.wat} | 0 ...emcpy.optimized.wat => memcpy.release.wat} | 0 ...emmove.untouched.wat => memmove.debug.wat} | 0 ...move.optimized.wat => memmove.release.wat} | 0 ...{memory.untouched.wat => memory.debug.wat} | 0 ...emory.optimized.wat => memory.release.wat} | 0 ...ase.untouched.wat => memorybase.debug.wat} | 2 +- ...e.optimized.wat => memorybase.release.wat} | 0 ...{memset.untouched.wat => memset.debug.wat} | 0 ...emset.optimized.wat => memset.release.wat} | 0 .../{merge.untouched.wat => merge.debug.wat} | 0 ...{merge.optimized.wat => merge.release.wat} | 0 tests/compiler/mutable-globals.debug.wat | 86 + .../{features => }/mutable-globals.js | 8 +- tests/compiler/mutable-globals.json | 5 + ...imized.wat => mutable-globals.release.wat} | 28 +- .../{features => }/mutable-globals.ts | 0 ...hed.wat => named-export-default.debug.wat} | 0 ...d.wat => named-export-default.release.wat} | 0 ...hed.wat => named-import-default.debug.wat} | 0 ...d.wat => named-import-default.release.wat} | 0 ...pace.untouched.wat => namespace.debug.wat} | 0 ...ce.optimized.wat => namespace.release.wat} | 0 .../{new.untouched.wat => new.debug.wat} | 238 +- .../{new.optimized.wat => new.release.wat} | 5 + tests/compiler/node_modules/README.md | 1 + tests/compiler/node_modules/_/index.ts | 29 + .../node_modules/_/node_modules/a/index.ts | 8 + .../_/node_modules/a/node_modules/c/index.ts | 7 + .../node_modules/_/node_modules/a/other.ts | 1 + tests/compiler/node_modules/b/index.ts | 1 + tests/compiler/node_modules/b/other.ts | 1 + tests/compiler/node_modules/b/other/index.ts | 1 + tests/compiler/node_modules/tsconfig.json | 9 + ...ntouched.wat => nontrapping-f2i.debug.wat} | 4 +- tests/compiler/nontrapping-f2i.json | 5 + ...imized.wat => nontrapping-f2i.release.wat} | 0 .../{features => }/nontrapping-f2i.ts | 0 ...{number.untouched.wat => number.debug.wat} | 1502 +- ...umber.optimized.wat => number.release.wat} | 1180 +- ...untouched.wat => object-literal.debug.wat} | 1527 +- tests/compiler/object-literal.optimized.wat | 3841 -- ...timized.wat => object-literal.release.wat} | 2984 +- ....wat => optional-typeparameters.debug.wat} | 238 +- ...at => optional-typeparameters.release.wat} | 5 + ...rflow.untouched.wat => overflow.debug.wat} | 0 ...low.optimized.wat => overflow.release.wat} | 0 tests/compiler/packages.debug.wat | 87 + .../compiler/{std/simd.json => packages.json} | 0 ...ids.optimized.wat => packages.release.wat} | 0 tests/compiler/packages.ts | 2 + ...hed.wat => portable-conversions.debug.wat} | 40 +- ...d.wat => portable-conversions.release.wat} | 0 ....untouched.wat => possibly-null.debug.wat} | 0 ...ptimized.wat => possibly-null.release.wat} | 0 ...sive.untouched.wat => recursive.debug.wat} | 0 ...ve.optimized.wat => recursive.release.wat} | 0 tests/compiler/reexport.debug.wat | 2364 + tests/compiler/reexport.optimized.wat | 1861 - tests/compiler/reexport.release.wat | 1550 + tests/compiler/reexport.untouched.wat | 3007 - ...ort.untouched.wat => rereexport.debug.wat} | 257 +- ...t.optimized.wat => rereexport.release.wat} | 52 +- ...untouched.wat => resolve-access.debug.wat} | 1494 +- ...timized.wat => resolve-access.release.wat} | 1386 +- ...untouched.wat => resolve-binary.debug.wat} | 2000 +- ...timized.wat => resolve-binary.release.wat} | 1991 +- tests/compiler/resolve-binary.ts | 14 +- ...ed.wat => resolve-elementaccess.debug.wat} | 1504 +- ....wat => resolve-elementaccess.release.wat} | 1296 +- ... => resolve-function-expression.debug.wat} | 237 +- ...> resolve-function-expression.release.wat} | 1394 +- ...ched.wat => resolve-localortype.debug.wat} | 0 ...ed.wat => resolve-localortype.release.wat} | 0 tests/compiler/resolve-nested.debug.wat | 68 + tests/compiler/resolve-nested.optimized.wat | 1667 - tests/compiler/resolve-nested.release.wat | 41 + tests/compiler/resolve-nested.ts | 2 +- tests/compiler/resolve-nested.untouched.wat | 2749 - ...ew.untouched.wat => resolve-new.debug.wat} | 238 +- ....optimized.wat => resolve-new.release.wat} | 6 +- ...d.wat => resolve-propertyaccess.debug.wat} | 237 +- ...wat => resolve-propertyaccess.release.wat} | 233 +- ...ntouched.wat => resolve-ternary.debug.wat} | 1502 +- ...imized.wat => resolve-ternary.release.wat} | 1180 +- ....untouched.wat => resolve-unary.debug.wat} | 246 +- ...ptimized.wat => resolve-unary.release.wat} | 243 +- ...i32.untouched.wat => retain-i32.debug.wat} | 0 ...2.optimized.wat => retain-i32.release.wat} | 0 .../retain-release-sanity.optimized.wat | 2711 - .../retain-release-sanity.untouched.wat | 4797 -- tests/compiler/retain-release.optimized.wat | 266 - tests/compiler/retain-release.untouched.wat | 858 - tests/compiler/retain-return.optimized.wat | 1132 - ...{return.untouched.wat => return.debug.wat} | 0 ...eturn.optimized.wat => return.release.wat} | 0 ...alize.untouched.wat => finalize.debug.wat} | 238 +- tests/compiler/rt/finalize.json | 2 +- ...ize.optimized.wat => finalize.release.wat} | 6 +- .../{flags.untouched.wat => flags.debug.wat} | 0 tests/compiler/rt/flags.json | 3 - ...{flags.optimized.wat => flags.release.wat} | 0 .../rt/{ids.untouched.wat => ids.debug.wat} | 0 ...remental.optimized.wat => ids.release.wat} | 0 ...eof.untouched.wat => instanceof.debug.wat} | 236 +- tests/compiler/rt/instanceof.json | 2 +- ...f.optimized.wat => instanceof.release.wat} | 5 + .../runtime-incremental-export.debug.wat} | 238 +- .../runtime-incremental-export.release.wat} | 233 +- .../runtime-incremental.debug.wat} | 10 - ...ed.wat => runtime-incremental.release.wat} | 0 ...d.wat => runtime-minimal-export.debug.wat} | 2 +- ...wat => runtime-minimal-export.release.wat} | 0 ...ntouched.wat => runtime-minimal.debug.wat} | 0 ...imized.wat => runtime-minimal.release.wat} | 0 ...ched.wat => runtime-stub-export.debug.wat} | 0 ...ed.wat => runtime-stub-export.release.wat} | 0 ...b.untouched.wat => runtime-stub.debug.wat} | 0 .../runtime-stub.release.wat} | 0 tests/compiler/rt/stub-realloc.optimized.wat | 607 - tests/compiler/rt/stub-realloc.untouched.wat | 1758 - ...{scoped.untouched.wat => scoped.debug.wat} | 0 ...coped.optimized.wat => scoped.release.wat} | 0 .../simd.untouched.wat => simd.debug.wat} | 70 +- tests/compiler/simd.json | 5 + .../simd.optimized.wat => simd.release.wat} | 206 +- tests/compiler/{features => }/simd.ts | 8 +- tests/compiler/simd.untouched.wat | 2083 - ...is.untouched.wat => static-this.debug.wat} | 0 ....optimized.wat => static-this.release.wat} | 0 ...onsole.untouched.wat => console.debug.wat} | 746 +- tests/compiler/std-wasi/console.json | 7 +- ...sole.optimized.wat => console.release.wat} | 968 +- ...{crypto.untouched.wat => crypto.debug.wat} | 2489 +- tests/compiler/std-wasi/crypto.json | 7 +- ...rypto.optimized.wat => crypto.release.wat} | 1537 +- ...rocess.untouched.wat => process.debug.wat} | 2112 +- tests/compiler/std-wasi/process.json | 7 +- ...cess.optimized.wat => process.release.wat} | 2198 +- ...s.untouched.wat => array-access.debug.wat} | 2 +- ...optimized.wat => array-access.release.wat} | 0 ....untouched.wat => array-literal.debug.wat} | 1493 +- ...ptimized.wat => array-literal.release.wat} | 257 +- .../{array.untouched.wat => array.debug.wat} | 53605 +++++++--------- tests/compiler/std/array.json | 2 +- ...{array.optimized.wat => array.release.wat} | 28889 +++------ tests/compiler/std/array.ts | 12 +- ...er.untouched.wat => arraybuffer.debug.wat} | 1512 +- ....optimized.wat => arraybuffer.release.wat} | 1453 +- tests/compiler/std/arraybuffer.ts | 2 +- tests/compiler/std/console.debug.wat | 254 + .../{features/simd.json => std/console.json} | 3 - tests/compiler/std/console.release.wat | 166 + tests/compiler/std/console.ts | 25 + ...aview.untouched.wat => dataview.debug.wat} | 238 +- ...iew.optimized.wat => dataview.release.wat} | 253 +- tests/compiler/std/dataview.ts | 224 +- .../{date.untouched.wat => date.debug.wat} | 1707 +- tests/compiler/std/date.json | 2 +- .../{date.optimized.wat => date.release.wat} | 1982 +- .../{hash.untouched.wat => hash.debug.wat} | 0 .../{hash.optimized.wat => hash.release.wat} | 0 .../std/{map.untouched.wat => map.debug.wat} | 1903 +- .../{map.optimized.wat => map.release.wat} | 20347 +++--- .../{math.untouched.wat => math.debug.wat} | 232 +- tests/compiler/std/math.js | 4 +- .../{math.optimized.wat => math.release.wat} | 2542 +- .../std/{mod.untouched.wat => mod.debug.wat} | 0 tests/compiler/std/mod.js | 4 +- .../{mod.optimized.wat => mod.release.wat} | 104 +- .../std/{new.untouched.wat => new.debug.wat} | 238 +- .../{new.optimized.wat => new.release.wat} | 36 +- ...{object.untouched.wat => object.debug.wat} | 2 +- ...bject.optimized.wat => object.release.wat} | 0 ...hed.wat => operator-overloading.debug.wat} | 237 +- ...d.wat => operator-overloading.release.wat} | 37 +- tests/compiler/std/pointer.debug.wat | 649 + tests/compiler/std/pointer.optimized.wat | 1279 - tests/compiler/std/pointer.release.wat | 373 + tests/compiler/std/pointer.ts | 4 +- tests/compiler/std/pointer.untouched.wat | 2135 - ...ills.untouched.wat => polyfills.debug.wat} | 0 ...ls.optimized.wat => polyfills.release.wat} | 0 .../std/{set.untouched.wat => set.debug.wat} | 1495 +- .../{set.optimized.wat => set.release.wat} | 3621 +- tests/compiler/std/simd.ts | 31 - tests/compiler/std/static-array.debug.wat | 3205 + ...optimized.wat => static-array.release.wat} | 1751 +- tests/compiler/std/static-array.untouched.wat | 4690 -- ...ay.untouched.wat => staticarray.debug.wat} | 1626 +- ....optimized.wat => staticarray.release.wat} | 2535 +- ...uched.wat => string-casemapping.debug.wat} | 1536 +- tests/compiler/std/string-casemapping.js | 4 +- ...zed.wat => string-casemapping.release.wat} | 2635 +- ...ntouched.wat => string-encoding.debug.wat} | 1584 +- ...imized.wat => string-encoding.release.wat} | 1266 +- tests/compiler/std/string-nonnull.debug.wat | 280 + .../std/string-nonnull.json} | 0 tests/compiler/std/string-nonnull.release.wat | 49 + tests/compiler/std/string-nonnull.ts | 13 + ...{string.untouched.wat => string.debug.wat} | 1681 +- ...tring.optimized.wat => string.release.wat} | 3205 +- ...{symbol.untouched.wat => symbol.debug.wat} | 1528 +- tests/compiler/std/symbol.json | 2 +- ...ymbol.optimized.wat => symbol.release.wat} | 1407 +- tests/compiler/std/symbol.ts | 8 +- .../{trace.untouched.wat => trace.debug.wat} | 0 tests/compiler/std/trace.json | 2 +- ...{trace.optimized.wat => trace.release.wat} | 0 ...ray.untouched.wat => typedarray.debug.wat} | 2669 +- ...y.optimized.wat => typedarray.release.wat} | 29253 ++++----- tests/compiler/std/typedarray.ts | 2 +- .../std/{uri.untouched.wat => uri.debug.wat} | 1552 +- .../{uri.optimized.wat => uri.release.wat} | 1418 +- tests/compiler/std/uri.ts | 4 +- ...e.untouched.wat => super-inline.debug.wat} | 238 +- ...optimized.wat => super-inline.release.wat} | 5 + ...{switch.untouched.wat => switch.debug.wat} | 0 ...witch.optimized.wat => switch.release.wat} | 0 ...base.untouched.wat => tablebase.debug.wat} | 2 +- ...se.optimized.wat => tablebase.release.wat} | 0 ...ntouched.wat => templateliteral.debug.wat} | 1886 +- tests/compiler/templateliteral.json | 2 +- ...imized.wat => templateliteral.release.wat} | 1605 +- ...ernary.untouched.wat => ternary.debug.wat} | 0 ...nary.optimized.wat => ternary.release.wat} | 0 .../{throw.untouched.wat => throw.debug.wat} | 2 +- ...{throw.optimized.wat => throw.release.wat} | 42 +- tests/compiler/tsconfig.json | 4 + ...lias.untouched.wat => typealias.debug.wat} | 0 ...as.optimized.wat => typealias.release.wat} | 0 ...{typeof.untouched.wat => typeof.debug.wat} | 377 +- tests/compiler/typeof.json | 2 +- ...ypeof.optimized.wat => typeof.release.wat} | 165 +- tests/compiler/typeof.ts | 4 +- .../{unary.untouched.wat => unary.debug.wat} | 0 ...{unary.optimized.wat => unary.release.wat} | 0 ...ouched.wat => unify-local-flags.debug.wat} | 0 ...ized.wat => unify-local-flags.release.wat} | 0 .../compiler/unknown-bool-ident.untouched.wat | 0 tests/compiler/unmanaged-errors.ts | 10 +- .../{void.untouched.wat => void.debug.wat} | 0 .../{void.optimized.wat => void.release.wat} | 0 .../{abort.untouched.wat => abort.debug.wat} | 163 +- tests/compiler/wasi/abort.js | 8 +- ...{abort.optimized.wat => abort.release.wat} | 2 +- .../{seed.untouched.wat => seed.debug.wat} | 2 +- tests/compiler/wasi/seed.js | 12 +- .../{seed.optimized.wat => seed.release.wat} | 2 +- ...ouched.wat => snapshot_preview1.debug.wat} | 2 +- ...ized.wat => snapshot_preview1.release.wat} | 0 .../{trace.untouched.wat => trace.debug.wat} | 1426 +- tests/compiler/wasi/trace.js | 8 +- ...{trace.optimized.wat => trace.release.wat} | 1406 +- .../{while.untouched.wat => while.debug.wat} | 238 +- ...{while.optimized.wat => while.release.wat} | 6 +- tests/decompiler.js | 29 - tests/extension/assembly/index.as | 2 - tests/extension/assembly/other.as | 3 - tests/extension/package.json | 6 - tests/features.json | 17 - tests/import/index.ts | 3 + tests/packages/.gitignore | 4 - tests/packages/package.json | 16 - tests/packages/packages/a/assembly/a.ts | 3 - tests/packages/packages/a/assembly/index.ts | 1 - tests/packages/packages/as/as/as.ts | 3 - tests/packages/packages/as/as/index.ts | 1 - tests/packages/packages/as/package.json | 3 - tests/packages/packages/b/assembly/b.ts | 9 - tests/packages/packages/b/assembly/index.ts | 1 - .../packages/b/node_modules/a/assembly/a.ts | 3 - .../b/node_modules/a/assembly/index.ts | 1 - tests/packages/packages/c/assembly/c.ts | 13 - tests/packages/packages/c/assembly/index.ts | 1 - .../packages/c/node_modules/b/assembly/b.ts | 9 - .../c/node_modules/b/assembly/index.ts | 1 - .../b/node_modules/a/assembly/a.ts | 3 - .../b/node_modules/a/assembly/index.ts | 1 - tests/packages/packages/d/assembly/d.ts | 27 - tests/packages/packages/d/assembly/index.ts | 1 - .../d/node_modules/as/notassembly/as.ts | 3 - .../d/node_modules/as/notassembly/index.ts | 1 - .../packages/d/node_modules/as/package.json | 3 - .../packages/d/node_modules/c/assembly/c.ts | 13 - .../d/node_modules/c/assembly/index.ts | 1 - .../c/node_modules/b/assembly/b.ts | 9 - .../c/node_modules/b/assembly/index.ts | 1 - .../b/node_modules/a/assembly/a.ts | 3 - .../b/node_modules/a/assembly/index.ts | 1 - .../packages/d/packages/e/assembly/e.ts | 9 - .../packages/d/packages/e/assembly/index.ts | 1 - .../d/packages/e/packages/f/assembly/f.ts | 3 - .../d/packages/e/packages/f/assembly/index.ts | 1 - tests/packages/packages/g/assembly/g.ts | 10 - tests/packages/packages/g/assembly/index.ts | 1 - .../packages/g/node_modules/c/assembly/c.ts | 13 - .../g/node_modules/c/assembly/index.ts | 1 - .../c/node_modules/b/assembly/b.ts | 9 - .../c/node_modules/b/assembly/index.ts | 1 - .../b/node_modules/a/assembly/a.ts | 3 - .../b/node_modules/a/assembly/index.ts | 1 - tests/packages/packages/g/test.js | 15 - tests/packages/packages/h/assembly/index.ts | 5 - .../h/node_modules/@foo/bar/assembly/index.ts | 3 - .../node_modules/@bar/baz/assembly/index.ts | 1 - tests/packages/tsconfig.json | 4 - tests/parser.js | 76 +- tests/parser/module.ts | 2 + tests/parser/module.ts.fixture.ts | 2 + tests/require/index-release.ts | 6 - tests/require/index.ts | 6 - tests/tokenizer.js | 29 +- tests/transform/cjs/index.js | 21 + tests/transform/cjs/package.json | 3 + tests/transform/cjs/simple.js | 18 + tests/transform/index.js | 63 + tests/transform/simple.js | 18 + tests/util-path.js | 18 - tests/util/diff.js | 30 - tsconfig-docs.json | 9 - util/README.md | 23 + util/browser/fs.js | 1 + util/browser/module.js | 5 + util/browser/path.js | 520 + {cli/shim => util/browser}/process.js | 41 +- util/browser/url.js | 23 + util/cpu.d.ts | 9 + util/cpu.js | 42 + util/find.d.ts | 6 + {cli/util => util}/find.js | 7 +- util/node.d.ts | 21 + util/node.js | 34 + {cli/util => util}/options.d.ts | 9 +- {cli/util => util}/options.js | 45 +- util/terminal.d.ts | 52 + util/terminal.js | 35 + util/text.d.ts | 26 + util/text.js | 114 + {lib/parse/src => util}/tsconfig.json | 3 +- util/web.d.ts | 11 + util/web.js | 33 + webpack.config.js | 135 - 779 files changed, 127990 insertions(+), 251587 deletions(-) rename .eslintrc.js => .eslintrc.cjs (97%) delete mode 100644 CODE_OF_CONDUCT.md delete mode 100755 bin/asc create mode 100644 bin/asc.js rename bin/{asinit => asinit.js} (52%) mode change 100755 => 100644 delete mode 100644 cli/asc.js rename cli/{asc.d.ts => index.d.ts} (63%) create mode 100644 cli/index.js rename cli/{asc.json => options.json} (85%) delete mode 100644 cli/shim/README.md delete mode 100644 cli/shim/fs.js delete mode 100644 cli/shim/path.js delete mode 100644 cli/transform.d.ts delete mode 100644 cli/transform.js create mode 100644 cli/tsconfig.json delete mode 100644 cli/util/colors.d.ts delete mode 100644 cli/util/colors.js delete mode 100644 cli/util/find.d.ts delete mode 100644 cli/util/mkdirp.d.ts delete mode 100644 cli/util/mkdirp.js delete mode 100644 cli/util/utf8.d.ts delete mode 100644 cli/util/utf8.js delete mode 100644 index.d.ts delete mode 100644 index.js delete mode 100644 index.release.d.ts delete mode 100644 index.release.js create mode 100644 lib/README.md create mode 100644 lib/binaryen.d.ts create mode 100644 lib/binaryen.js delete mode 100644 lib/parse/README.md delete mode 100644 lib/parse/assembly/index.ts delete mode 100644 lib/parse/assembly/options.ts delete mode 100644 lib/parse/assembly/tsconfig.json delete mode 100644 lib/parse/build/.gitignore delete mode 100644 lib/parse/build/index.wat delete mode 100644 lib/parse/index.d.ts delete mode 100644 lib/parse/index.js delete mode 100644 lib/parse/index.js.map delete mode 100644 lib/parse/package.json delete mode 100644 lib/parse/src/common.ts delete mode 100644 lib/parse/src/index.ts delete mode 100644 lib/parse/tests/index.ts delete mode 100644 lib/parse/tests/libm.wasm delete mode 100644 lib/parse/webpack.config.js delete mode 100644 lib/sdk/README.md delete mode 100644 lib/sdk/index.js delete mode 100644 lib/sdk/tests/index.html delete mode 100644 lib/webpack/README.md delete mode 100644 lib/webpack/decode.js delete mode 100644 lib/webpack/index.js delete mode 100644 lib/webpack/package.json create mode 100644 scripts/README.md delete mode 100644 scripts/build-diagnostics.js delete mode 100644 scripts/build-sdk.js create mode 100644 scripts/build-web.js delete mode 100644 scripts/clean.js delete mode 100644 scripts/postpublish-files.json delete mode 100644 scripts/postpublish.js delete mode 100644 snap/README.md delete mode 100644 snap/snapcraft.yaml create mode 100644 src/bindings.ts create mode 100644 src/bindings/js.ts create mode 100644 src/bindings/tsd.ts create mode 100644 src/bindings/util.ts delete mode 100644 src/definitions.ts delete mode 100644 src/diagnosticMessages.generated.ts create mode 100644 src/index-js.ts create mode 100644 src/index-wasm.ts create mode 100644 src/util.ts delete mode 100644 src/util/index.ts delete mode 100644 std/assembly/bindings/Date.ts delete mode 100644 std/assembly/bindings/Math.ts delete mode 100644 std/assembly/bindings/Reflect.ts delete mode 100644 std/assembly/bindings/console.ts create mode 100644 std/assembly/bindings/dom.ts create mode 100644 std/assembly/bindings/node.ts create mode 100644 std/assembly/performance.ts create mode 100644 tests/allocators/default/debug.wat create mode 100644 tests/allocators/default/release.wat delete mode 100644 tests/allocators/default/untouched.wat create mode 100644 tests/allocators/stub/debug.wat delete mode 100644 tests/allocators/stub/optimized.wat create mode 100644 tests/allocators/stub/release.wat delete mode 100644 tests/allocators/stub/untouched.wat delete mode 100644 tests/binaryen/asmjs-math-builtins.js delete mode 100644 tests/binaryen/asmjs.wat delete mode 100644 tests/binaryen/block-pre.js delete mode 100644 tests/binaryen/block-stack.js delete mode 100644 tests/binaryen/break-value.js delete mode 100644 tests/binaryen/const-expr.js delete mode 100644 tests/binaryen/const-expr.wat delete mode 100644 tests/binaryen/const-global.js delete mode 100644 tests/binaryen/const-global.wat delete mode 100644 tests/binaryen/const-local.js delete mode 100644 tests/binaryen/constant-indirect-arg.js delete mode 100644 tests/binaryen/constant-indirect.js delete mode 100644 tests/binaryen/get_global-missing.js delete mode 100644 tests/binaryen/get_local-missing.js delete mode 100644 tests/binaryen/i64-binary-result.js delete mode 100644 tests/binaryen/inline-export.js delete mode 100644 tests/binaryen/libm.html delete mode 100644 tests/binaryen/multi-value.js delete mode 100644 tests/binaryen/optimize-if-eqz.js delete mode 100644 tests/binaryen/optimize-if-eqz.wat delete mode 100644 tests/binaryen/precompute-join.wat delete mode 100644 tests/binaryen/reloop.js delete mode 100644 tests/binaryen/return-flatten.js delete mode 100644 tests/binaryen/set_global-immutable.js delete mode 100644 tests/binaryen/unreachable-loop.js delete mode 100644 tests/binaryen/unreachable-loop.wat delete mode 100644 tests/binaryen/unreachable-spam.js delete mode 100644 tests/browser-asc.js create mode 100644 tests/browser.js create mode 100644 tests/compiler/.gitignore rename tests/compiler/{NonNullable.untouched.wat => NonNullable.debug.wat} (91%) rename tests/compiler/{NonNullable.optimized.wat => NonNullable.release.wat} (58%) rename tests/compiler/{ReturnType.untouched.wat => ReturnType.debug.wat} (100%) rename tests/compiler/{ReturnType.optimized.wat => ReturnType.release.wat} (100%) rename tests/compiler/{abi.untouched.wat => abi.debug.wat} (100%) rename tests/compiler/{abi.optimized.wat => abi.release.wat} (100%) create mode 100644 tests/compiler/asc-constants.debug.wat rename tests/compiler/{asc-constants.optimized.wat => asc-constants.release.wat} (100%) delete mode 100644 tests/compiler/asc-constants.untouched.wat rename tests/compiler/{assert-nonnull.untouched.wat => assert-nonnull.debug.wat} (100%) rename tests/compiler/{assert-nonnull.optimized.wat => assert-nonnull.release.wat} (100%) rename tests/compiler/{assert.untouched.wat => assert.debug.wat} (100%) rename tests/compiler/{assert.optimized.wat => assert.release.wat} (100%) create mode 100644 tests/compiler/bigint-integration.debug.wat rename tests/compiler/{features/js-bigint-integration.js => bigint-integration.js} (72%) create mode 100644 tests/compiler/bigint-integration.json create mode 100644 tests/compiler/bigint-integration.release.wat rename tests/compiler/{features/js-bigint-integration.ts => bigint-integration.ts} (100%) rename tests/compiler/{binary.untouched.wat => binary.debug.wat} (99%) rename tests/compiler/{binary.optimized.wat => binary.release.wat} (70%) create mode 100644 tests/compiler/bindings/esm.debug.d.ts create mode 100644 tests/compiler/bindings/esm.debug.js create mode 100644 tests/compiler/bindings/esm.debug.wat create mode 100644 tests/compiler/bindings/esm.js create mode 100644 tests/compiler/bindings/esm.json create mode 100644 tests/compiler/bindings/esm.release.d.ts create mode 100644 tests/compiler/bindings/esm.release.js rename tests/compiler/{issues/1699.optimized.wat => bindings/esm.release.wat} (54%) create mode 100644 tests/compiler/bindings/esm.ts create mode 100644 tests/compiler/bindings/raw.debug.d.ts create mode 100644 tests/compiler/bindings/raw.debug.js create mode 100644 tests/compiler/bindings/raw.debug.wat create mode 100644 tests/compiler/bindings/raw.js create mode 100644 tests/compiler/bindings/raw.json create mode 100644 tests/compiler/bindings/raw.release.d.ts create mode 100644 tests/compiler/bindings/raw.release.js create mode 100644 tests/compiler/bindings/raw.release.wat create mode 100644 tests/compiler/bindings/raw.ts rename tests/compiler/{bool.untouched.wat => bool.debug.wat} (100%) rename tests/compiler/{bool.optimized.wat => bool.release.wat} (100%) rename tests/compiler/{builtins.untouched.wat => builtins.debug.wat} (99%) rename tests/compiler/{builtins.optimized.wat => builtins.release.wat} (99%) rename tests/compiler/{call-inferred.untouched.wat => call-inferred.debug.wat} (100%) rename tests/compiler/{call-inferred.optimized.wat => call-inferred.release.wat} (100%) rename tests/compiler/{call-optional.untouched.wat => call-optional.debug.wat} (100%) rename tests/compiler/{call-optional.optimized.wat => call-optional.release.wat} (100%) rename tests/compiler/{call-super.untouched.wat => call-super.debug.wat} (93%) rename tests/compiler/{call-super.optimized.wat => call-super.release.wat} (92%) rename tests/compiler/{cast.untouched.wat => cast.debug.wat} (100%) rename tests/compiler/{cast.optimized.wat => cast.release.wat} (100%) rename tests/compiler/{class-extends.untouched.wat => class-extends.debug.wat} (100%) rename tests/compiler/{class-extends.optimized.wat => class-extends.release.wat} (100%) create mode 100644 tests/compiler/class-implements.debug.wat delete mode 100644 tests/compiler/class-implements.optimized.wat create mode 100644 tests/compiler/class-implements.release.wat delete mode 100644 tests/compiler/class-implements.untouched.wat rename tests/compiler/{class-overloading-cast.untouched.wat => class-overloading-cast.debug.wat} (93%) rename tests/compiler/{class-overloading-cast.optimized.wat => class-overloading-cast.release.wat} (99%) rename tests/compiler/{class-overloading.untouched.wat => class-overloading.debug.wat} (95%) rename tests/compiler/{class-overloading.optimized.wat => class-overloading.release.wat} (99%) rename tests/compiler/{class-static-function.untouched.wat => class-static-function.debug.wat} (100%) rename tests/compiler/{class-static-function.optimized.wat => class-static-function.release.wat} (100%) rename tests/compiler/{class.untouched.wat => class.debug.wat} (92%) rename tests/compiler/{class.optimized.wat => class.release.wat} (90%) rename tests/compiler/{comma.untouched.wat => comma.debug.wat} (100%) rename tests/compiler/{comma.optimized.wat => comma.release.wat} (100%) rename tests/compiler/{const-folding.untouched.wat => const-folding.debug.wat} (100%) rename tests/compiler/{const-folding.optimized.wat => const-folding.release.wat} (100%) rename tests/compiler/{constructor.untouched.wat => constructor.debug.wat} (93%) rename tests/compiler/{constructor.optimized.wat => constructor.release.wat} (91%) rename tests/compiler/{continue.untouched.wat => continue.debug.wat} (100%) rename tests/compiler/{continue.optimized.wat => continue.release.wat} (100%) rename tests/compiler/{converge.untouched.wat => converge.debug.wat} (100%) rename tests/compiler/{converge.optimized.wat => converge.release.wat} (100%) rename tests/compiler/{declare.untouched.wat => declare.debug.wat} (100%) rename tests/compiler/{declare.optimized.wat => declare.release.wat} (100%) rename tests/compiler/{do.untouched.wat => do.debug.wat} (93%) rename tests/compiler/{do.optimized.wat => do.release.wat} (99%) rename tests/compiler/{duplicate-fields.untouched.wat => duplicate-fields.debug.wat} (86%) rename tests/compiler/{duplicate-fields.optimized.wat => duplicate-fields.release.wat} (81%) rename tests/compiler/{rt/runtime-incremental-export.untouched.wat => empty-exportruntime.debug.wat} (91%) rename tests/compiler/{rt/runtime-incremental-export.optimized.wat => empty-exportruntime.release.wat} (90%) rename tests/compiler/{empty-new.untouched.wat => empty-new.debug.wat} (90%) rename tests/compiler/{empty-new.optimized.wat => empty-new.release.wat} (99%) rename tests/compiler/{empty.untouched.wat => empty.debug.wat} (100%) rename tests/compiler/{empty.optimized.wat => empty.release.wat} (100%) rename tests/compiler/{enum.untouched.wat => enum.debug.wat} (100%) rename tests/compiler/{enum.optimized.wat => enum.release.wat} (100%) rename tests/compiler/{export-default.untouched.wat => export-default.debug.wat} (100%) rename tests/compiler/{export-default.optimized.wat => export-default.release.wat} (100%) delete mode 100644 tests/compiler/export-generic.json delete mode 100644 tests/compiler/export-generic.ts rename tests/compiler/{export.untouched.wat => export.debug.wat} (84%) rename tests/compiler/{exportstar.optimized.wat => export.release.wat} (83%) rename tests/compiler/{exportimport-table.untouched.wat => exportimport-table.debug.wat} (100%) rename tests/compiler/{exportimport-table.optimized.wat => exportimport-table.release.wat} (100%) rename tests/compiler/{exports-lazy.untouched.wat => exports-lazy.debug.wat} (55%) rename tests/compiler/{exports-lazy.optimized.wat => exports-lazy.release.wat} (53%) create mode 100644 tests/compiler/exports.debug.wat delete mode 100644 tests/compiler/exports.optimized.wat create mode 100644 tests/compiler/exports.release.wat delete mode 100644 tests/compiler/exports.untouched.wat rename tests/compiler/{exportstar-rereexport.untouched.wat => exportstar-rereexport.debug.wat} (91%) rename tests/compiler/{exportstar-rereexport.optimized.wat => exportstar-rereexport.release.wat} (96%) rename tests/compiler/{exportstar.untouched.wat => exportstar.debug.wat} (84%) rename tests/compiler/{export.optimized.wat => exportstar.release.wat} (83%) rename tests/compiler/{implicit-getter-setter.untouched.wat => extends-baseaggregate.debug.wat} (80%) create mode 100644 tests/compiler/extends-baseaggregate.release.wat delete mode 100644 tests/compiler/extends-baseaggregate.untouched.wat create mode 100644 tests/compiler/extends-recursive.debug.wat delete mode 100644 tests/compiler/extends-recursive.optimized.wat create mode 100644 tests/compiler/extends-recursive.release.wat delete mode 100644 tests/compiler/extends-recursive.untouched.wat rename tests/compiler/{external.untouched.wat => external.debug.wat} (86%) rename tests/compiler/{external.optimized.wat => external.release.wat} (81%) rename tests/compiler/{issues/1751.untouched.wat => features/exception-handling.debug.wat} (100%) create mode 100644 tests/compiler/features/exception-handling.json rename tests/compiler/{function.optimized.wat => features/exception-handling.release.wat} (100%) create mode 100644 tests/compiler/features/exception-handling.ts rename tests/compiler/features/{gc.untouched.wat => gc.debug.wat} (100%) rename tests/compiler/features/{gc.optimized.wat => gc.release.wat} (100%) delete mode 100644 tests/compiler/features/js-bigint-integration.json delete mode 100644 tests/compiler/features/js-bigint-integration.optimized.wat delete mode 100644 tests/compiler/features/js-bigint-integration.untouched.wat delete mode 100644 tests/compiler/features/mutable-globals.json delete mode 100644 tests/compiler/features/mutable-globals.untouched.wat delete mode 100644 tests/compiler/features/nontrapping-f2i.json rename tests/compiler/features/{reference-types.untouched.wat => reference-types.debug.wat} (83%) rename tests/compiler/features/{reference-types.optimized.wat => reference-types.release.wat} (63%) rename tests/compiler/features/{threads.untouched.wat => threads.debug.wat} (99%) rename tests/compiler/features/{threads.optimized.wat => threads.release.wat} (100%) rename tests/compiler/{field-initialization.untouched.wat => field-initialization.debug.wat} (95%) rename tests/compiler/{field-initialization.optimized.wat => field-initialization.release.wat} (94%) create mode 100644 tests/compiler/field.debug.wat delete mode 100644 tests/compiler/field.optimized.wat rename tests/compiler/{implicit-getter-setter.optimized.wat => field.release.wat} (80%) delete mode 100644 tests/compiler/field.untouched.wat rename tests/compiler/{for.untouched.wat => for.debug.wat} (93%) rename tests/compiler/{for.optimized.wat => for.release.wat} (99%) rename tests/compiler/{function-call.untouched.wat => function-call.debug.wat} (92%) rename tests/compiler/{function-call.optimized.wat => function-call.release.wat} (99%) rename tests/compiler/{function-expression.untouched.wat => function-expression.debug.wat} (94%) rename tests/compiler/{function-expression.optimized.wat => function-expression.release.wat} (98%) rename tests/compiler/{function-inline-regressions.untouched.wat => function-inline-regressions.debug.wat} (100%) rename tests/compiler/{function-inline-regressions.optimized.wat => function-inline-regressions.release.wat} (100%) rename tests/compiler/{function-types.untouched.wat => function-types.debug.wat} (100%) rename tests/compiler/{function-types.optimized.wat => function-types.release.wat} (100%) delete mode 100644 tests/compiler/function.untouched.wat rename tests/compiler/{getter-call.untouched.wat => getter-call.debug.wat} (91%) rename tests/compiler/{getter-call.optimized.wat => getter-call.release.wat} (99%) rename tests/compiler/{getter-setter.untouched.wat => getter-setter.debug.wat} (100%) rename tests/compiler/{getter-setter.optimized.wat => getter-setter.release.wat} (100%) rename tests/compiler/{retain-return.untouched.wat => heap.debug.wat} (62%) delete mode 100644 tests/compiler/heap.optimized.wat rename tests/{allocators/default/optimized.wat => compiler/heap.release.wat} (66%) delete mode 100644 tests/compiler/heap.untouched.wat rename tests/compiler/{if.untouched.wat => if.debug.wat} (100%) rename tests/compiler/{if.optimized.wat => if.release.wat} (100%) delete mode 100644 tests/compiler/implicit-getter-setter.js delete mode 100644 tests/compiler/implicit-getter-setter.json delete mode 100644 tests/compiler/implicit-getter-setter.ts rename tests/compiler/{import.untouched.wat => import.debug.wat} (100%) rename tests/compiler/{import.optimized.wat => import.release.wat} (100%) rename tests/compiler/{indexof-valueof.untouched.wat => indexof-valueof.debug.wat} (100%) rename tests/compiler/{indexof-valueof.optimized.wat => indexof-valueof.release.wat} (100%) rename tests/compiler/{infer-array.untouched.wat => infer-array.debug.wat} (72%) rename tests/compiler/{infer-array.optimized.wat => infer-array.release.wat} (67%) rename tests/compiler/{infer-generic.untouched.wat => infer-generic.debug.wat} (92%) rename tests/compiler/{infer-generic.optimized.wat => infer-generic.release.wat} (95%) rename tests/compiler/{infer-type.untouched.wat => infer-type.debug.wat} (100%) rename tests/compiler/{infer-type.optimized.wat => infer-type.release.wat} (100%) rename tests/compiler/{inlining-blocklocals.untouched.wat => inlining-blocklocals.debug.wat} (100%) rename tests/compiler/{inlining-blocklocals.optimized.wat => inlining-blocklocals.release.wat} (100%) rename tests/compiler/{inlining-recursive.untouched.wat => inlining-recursive.debug.wat} (100%) rename tests/compiler/{inlining-recursive.optimized.wat => inlining-recursive.release.wat} (100%) rename tests/compiler/{inlining.untouched.wat => inlining.debug.wat} (92%) rename tests/compiler/{inlining.optimized.wat => inlining.release.wat} (90%) rename tests/compiler/{instanceof-class.untouched.wat => instanceof-class.debug.wat} (92%) rename tests/compiler/{instanceof-class.optimized.wat => instanceof-class.release.wat} (99%) rename tests/compiler/{instanceof.untouched.wat => instanceof.debug.wat} (100%) rename tests/compiler/{instanceof.optimized.wat => instanceof.release.wat} (100%) rename tests/compiler/issues/{1095.untouched.wat => 1095.debug.wat} (91%) rename tests/compiler/issues/{1095.optimized.wat => 1095.release.wat} (98%) rename tests/compiler/issues/{1225.untouched.wat => 1225.debug.wat} (91%) rename tests/compiler/issues/{1225.optimized.wat => 1225.release.wat} (91%) create mode 100644 tests/compiler/issues/1699.debug.wat create mode 100644 tests/compiler/issues/1699.release.wat delete mode 100644 tests/compiler/issues/1699.untouched.wat create mode 100644 tests/compiler/issues/1714.debug.wat delete mode 100644 tests/compiler/issues/1714.optimized.wat create mode 100644 tests/compiler/issues/1714.release.wat delete mode 100644 tests/compiler/issues/1714.untouched.wat rename tests/compiler/{rt/runtime-incremental.untouched.wat => issues/1751.debug.wat} (100%) rename tests/compiler/issues/{1751.optimized.wat => 1751.release.wat} (100%) rename tests/compiler/issues/{2166.untouched.wat => 2166.debug.wat} (92%) rename tests/compiler/issues/{2166.optimized.wat => 2166.release.wat} (99%) rename tests/compiler/{limits.untouched.wat => limits.debug.wat} (100%) rename tests/compiler/{limits.optimized.wat => limits.release.wat} (100%) rename tests/compiler/{literals.untouched.wat => literals.debug.wat} (100%) rename tests/compiler/{literals.optimized.wat => literals.release.wat} (100%) rename tests/compiler/{logical.untouched.wat => logical.debug.wat} (92%) rename tests/compiler/{logical.optimized.wat => logical.release.wat} (99%) rename tests/compiler/{loop-flow.untouched.wat => loop-flow.debug.wat} (100%) rename tests/compiler/{loop-flow.optimized.wat => loop-flow.release.wat} (100%) rename tests/compiler/{loop-wrap.untouched.wat => loop-wrap.debug.wat} (100%) rename tests/compiler/{loop-wrap.optimized.wat => loop-wrap.release.wat} (100%) rename tests/compiler/{managed-cast.untouched.wat => managed-cast.debug.wat} (92%) rename tests/compiler/{managed-cast.optimized.wat => managed-cast.release.wat} (99%) rename tests/compiler/{many-locals.untouched.wat => many-locals.debug.wat} (100%) rename tests/compiler/{many-locals.optimized.wat => many-locals.release.wat} (100%) rename tests/compiler/{memcpy.untouched.wat => memcpy.debug.wat} (100%) rename tests/compiler/{memcpy.optimized.wat => memcpy.release.wat} (100%) rename tests/compiler/{memmove.untouched.wat => memmove.debug.wat} (100%) rename tests/compiler/{memmove.optimized.wat => memmove.release.wat} (100%) rename tests/compiler/{memory.untouched.wat => memory.debug.wat} (100%) rename tests/compiler/{memory.optimized.wat => memory.release.wat} (100%) rename tests/compiler/{memorybase.untouched.wat => memorybase.debug.wat} (90%) rename tests/compiler/{memorybase.optimized.wat => memorybase.release.wat} (100%) rename tests/compiler/{memset.untouched.wat => memset.debug.wat} (100%) rename tests/compiler/{memset.optimized.wat => memset.release.wat} (100%) rename tests/compiler/{merge.untouched.wat => merge.debug.wat} (100%) rename tests/compiler/{merge.optimized.wat => merge.release.wat} (100%) create mode 100644 tests/compiler/mutable-globals.debug.wat rename tests/compiler/{features => }/mutable-globals.js (75%) create mode 100644 tests/compiler/mutable-globals.json rename tests/compiler/{features/mutable-globals.optimized.wat => mutable-globals.release.wat} (54%) rename tests/compiler/{features => }/mutable-globals.ts (100%) rename tests/compiler/{named-export-default.untouched.wat => named-export-default.debug.wat} (100%) rename tests/compiler/{named-export-default.optimized.wat => named-export-default.release.wat} (100%) rename tests/compiler/{named-import-default.untouched.wat => named-import-default.debug.wat} (100%) rename tests/compiler/{named-import-default.optimized.wat => named-import-default.release.wat} (100%) rename tests/compiler/{namespace.untouched.wat => namespace.debug.wat} (100%) rename tests/compiler/{namespace.optimized.wat => namespace.release.wat} (100%) rename tests/compiler/{new.untouched.wat => new.debug.wat} (92%) rename tests/compiler/{new.optimized.wat => new.release.wat} (99%) create mode 100644 tests/compiler/node_modules/README.md create mode 100644 tests/compiler/node_modules/_/index.ts create mode 100644 tests/compiler/node_modules/_/node_modules/a/index.ts create mode 100644 tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts create mode 100644 tests/compiler/node_modules/_/node_modules/a/other.ts create mode 100644 tests/compiler/node_modules/b/index.ts create mode 100644 tests/compiler/node_modules/b/other.ts create mode 100644 tests/compiler/node_modules/b/other/index.ts create mode 100644 tests/compiler/node_modules/tsconfig.json rename tests/compiler/{features/nontrapping-f2i.untouched.wat => nontrapping-f2i.debug.wat} (98%) create mode 100644 tests/compiler/nontrapping-f2i.json rename tests/compiler/{features/nontrapping-f2i.optimized.wat => nontrapping-f2i.release.wat} (100%) rename tests/compiler/{features => }/nontrapping-f2i.ts (100%) rename tests/compiler/{number.untouched.wat => number.debug.wat} (80%) rename tests/compiler/{number.optimized.wat => number.release.wat} (77%) rename tests/compiler/{object-literal.untouched.wat => object-literal.debug.wat} (74%) delete mode 100644 tests/compiler/object-literal.optimized.wat rename tests/compiler/{extends-baseaggregate.optimized.wat => object-literal.release.wat} (55%) rename tests/compiler/{optional-typeparameters.untouched.wat => optional-typeparameters.debug.wat} (91%) rename tests/compiler/{optional-typeparameters.optimized.wat => optional-typeparameters.release.wat} (99%) rename tests/compiler/{overflow.untouched.wat => overflow.debug.wat} (100%) rename tests/compiler/{overflow.optimized.wat => overflow.release.wat} (100%) create mode 100644 tests/compiler/packages.debug.wat rename tests/compiler/{std/simd.json => packages.json} (100%) rename tests/compiler/{rt/ids.optimized.wat => packages.release.wat} (100%) create mode 100644 tests/compiler/packages.ts rename tests/compiler/{portable-conversions.untouched.wat => portable-conversions.debug.wat} (95%) rename tests/compiler/{portable-conversions.optimized.wat => portable-conversions.release.wat} (100%) rename tests/compiler/{possibly-null.untouched.wat => possibly-null.debug.wat} (100%) rename tests/compiler/{possibly-null.optimized.wat => possibly-null.release.wat} (100%) rename tests/compiler/{recursive.untouched.wat => recursive.debug.wat} (100%) rename tests/compiler/{recursive.optimized.wat => recursive.release.wat} (100%) create mode 100644 tests/compiler/reexport.debug.wat delete mode 100644 tests/compiler/reexport.optimized.wat create mode 100644 tests/compiler/reexport.release.wat delete mode 100644 tests/compiler/reexport.untouched.wat rename tests/compiler/{rereexport.untouched.wat => rereexport.debug.wat} (91%) rename tests/compiler/{rereexport.optimized.wat => rereexport.release.wat} (96%) rename tests/compiler/{resolve-access.untouched.wat => resolve-access.debug.wat} (73%) rename tests/compiler/{resolve-access.optimized.wat => resolve-access.release.wat} (70%) rename tests/compiler/{resolve-binary.untouched.wat => resolve-binary.debug.wat} (83%) rename tests/compiler/{resolve-binary.optimized.wat => resolve-binary.release.wat} (69%) rename tests/compiler/{resolve-elementaccess.untouched.wat => resolve-elementaccess.debug.wat} (80%) rename tests/compiler/{resolve-elementaccess.optimized.wat => resolve-elementaccess.release.wat} (80%) rename tests/compiler/{resolve-function-expression.untouched.wat => resolve-function-expression.debug.wat} (93%) rename tests/compiler/{resolve-function-expression.optimized.wat => resolve-function-expression.release.wat} (74%) rename tests/compiler/{resolve-localortype.untouched.wat => resolve-localortype.debug.wat} (100%) rename tests/compiler/{resolve-localortype.optimized.wat => resolve-localortype.release.wat} (100%) create mode 100644 tests/compiler/resolve-nested.debug.wat delete mode 100644 tests/compiler/resolve-nested.optimized.wat create mode 100644 tests/compiler/resolve-nested.release.wat delete mode 100644 tests/compiler/resolve-nested.untouched.wat rename tests/compiler/{resolve-new.untouched.wat => resolve-new.debug.wat} (91%) rename tests/compiler/{resolve-new.optimized.wat => resolve-new.release.wat} (99%) rename tests/compiler/{resolve-propertyaccess.untouched.wat => resolve-propertyaccess.debug.wat} (94%) rename tests/compiler/{resolve-propertyaccess.optimized.wat => resolve-propertyaccess.release.wat} (93%) rename tests/compiler/{resolve-ternary.untouched.wat => resolve-ternary.debug.wat} (78%) rename tests/compiler/{resolve-ternary.optimized.wat => resolve-ternary.release.wat} (76%) rename tests/compiler/{resolve-unary.untouched.wat => resolve-unary.debug.wat} (94%) rename tests/compiler/{resolve-unary.optimized.wat => resolve-unary.release.wat} (93%) rename tests/compiler/{retain-i32.untouched.wat => retain-i32.debug.wat} (100%) rename tests/compiler/{retain-i32.optimized.wat => retain-i32.release.wat} (100%) delete mode 100644 tests/compiler/retain-release-sanity.optimized.wat delete mode 100644 tests/compiler/retain-release-sanity.untouched.wat delete mode 100644 tests/compiler/retain-release.optimized.wat delete mode 100644 tests/compiler/retain-release.untouched.wat delete mode 100644 tests/compiler/retain-return.optimized.wat rename tests/compiler/{return.untouched.wat => return.debug.wat} (100%) rename tests/compiler/{return.optimized.wat => return.release.wat} (100%) rename tests/compiler/rt/{finalize.untouched.wat => finalize.debug.wat} (91%) rename tests/compiler/rt/{finalize.optimized.wat => finalize.release.wat} (99%) rename tests/compiler/rt/{flags.untouched.wat => flags.debug.wat} (100%) rename tests/compiler/rt/{flags.optimized.wat => flags.release.wat} (100%) rename tests/compiler/rt/{ids.untouched.wat => ids.debug.wat} (100%) rename tests/compiler/rt/{runtime-incremental.optimized.wat => ids.release.wat} (100%) rename tests/compiler/rt/{instanceof.untouched.wat => instanceof.debug.wat} (93%) rename tests/compiler/rt/{instanceof.optimized.wat => instanceof.release.wat} (99%) rename tests/compiler/{empty-exportruntime.untouched.wat => rt/runtime-incremental-export.debug.wat} (91%) rename tests/compiler/{empty-exportruntime.optimized.wat => rt/runtime-incremental-export.release.wat} (90%) rename tests/compiler/{std/simd.untouched.wat => rt/runtime-incremental.debug.wat} (60%) rename tests/compiler/rt/{runtime-minimal.optimized.wat => runtime-incremental.release.wat} (100%) rename tests/compiler/rt/{runtime-minimal-export.untouched.wat => runtime-minimal-export.debug.wat} (99%) rename tests/compiler/rt/{runtime-minimal-export.optimized.wat => runtime-minimal-export.release.wat} (100%) rename tests/compiler/rt/{runtime-minimal.untouched.wat => runtime-minimal.debug.wat} (100%) rename tests/compiler/rt/{runtime-stub.optimized.wat => runtime-minimal.release.wat} (100%) rename tests/compiler/rt/{runtime-stub-export.untouched.wat => runtime-stub-export.debug.wat} (100%) rename tests/compiler/rt/{runtime-stub-export.optimized.wat => runtime-stub-export.release.wat} (100%) rename tests/compiler/rt/{runtime-stub.untouched.wat => runtime-stub.debug.wat} (100%) rename tests/compiler/{std/simd.optimized.wat => rt/runtime-stub.release.wat} (100%) delete mode 100644 tests/compiler/rt/stub-realloc.optimized.wat delete mode 100644 tests/compiler/rt/stub-realloc.untouched.wat rename tests/compiler/{scoped.untouched.wat => scoped.debug.wat} (100%) rename tests/compiler/{scoped.optimized.wat => scoped.release.wat} (100%) rename tests/compiler/{features/simd.untouched.wat => simd.debug.wat} (98%) create mode 100644 tests/compiler/simd.json rename tests/compiler/{features/simd.optimized.wat => simd.release.wat} (83%) rename tests/compiler/{features => }/simd.ts (98%) delete mode 100644 tests/compiler/simd.untouched.wat rename tests/compiler/{static-this.untouched.wat => static-this.debug.wat} (100%) rename tests/compiler/{static-this.optimized.wat => static-this.release.wat} (100%) rename tests/compiler/std-wasi/{console.untouched.wat => console.debug.wat} (97%) rename tests/compiler/std-wasi/{console.optimized.wat => console.release.wat} (80%) rename tests/compiler/std-wasi/{crypto.untouched.wat => crypto.debug.wat} (86%) rename tests/compiler/std-wasi/{crypto.optimized.wat => crypto.release.wat} (72%) rename tests/compiler/std-wasi/{process.untouched.wat => process.debug.wat} (88%) rename tests/compiler/std-wasi/{process.optimized.wat => process.release.wat} (75%) rename tests/compiler/std/{array-access.untouched.wat => array-access.debug.wat} (99%) rename tests/compiler/std/{array-access.optimized.wat => array-access.release.wat} (100%) rename tests/compiler/std/{array-literal.untouched.wat => array-literal.debug.wat} (72%) rename tests/compiler/std/{array-literal.optimized.wat => array-literal.release.wat} (92%) rename tests/compiler/std/{array.untouched.wat => array.debug.wat} (77%) rename tests/compiler/std/{array.optimized.wat => array.release.wat} (69%) rename tests/compiler/std/{arraybuffer.untouched.wat => arraybuffer.debug.wat} (73%) rename tests/compiler/std/{arraybuffer.optimized.wat => arraybuffer.release.wat} (69%) create mode 100644 tests/compiler/std/console.debug.wat rename tests/compiler/{features/simd.json => std/console.json} (61%) create mode 100644 tests/compiler/std/console.release.wat create mode 100644 tests/compiler/std/console.ts rename tests/compiler/std/{dataview.untouched.wat => dataview.debug.wat} (95%) rename tests/compiler/std/{dataview.optimized.wat => dataview.release.wat} (95%) rename tests/compiler/std/{date.untouched.wat => date.debug.wat} (87%) rename tests/compiler/std/{date.optimized.wat => date.release.wat} (80%) rename tests/compiler/std/{hash.untouched.wat => hash.debug.wat} (100%) rename tests/compiler/std/{hash.optimized.wat => hash.release.wat} (100%) rename tests/compiler/std/{map.untouched.wat => map.debug.wat} (94%) rename tests/compiler/std/{map.optimized.wat => map.release.wat} (67%) rename tests/compiler/std/{math.untouched.wat => math.debug.wat} (99%) rename tests/compiler/std/{math.optimized.wat => math.release.wat} (96%) rename tests/compiler/std/{mod.untouched.wat => mod.debug.wat} (100%) rename tests/compiler/std/{mod.optimized.wat => mod.release.wat} (98%) rename tests/compiler/std/{new.untouched.wat => new.debug.wat} (91%) rename tests/compiler/std/{new.optimized.wat => new.release.wat} (98%) rename tests/compiler/std/{object.untouched.wat => object.debug.wat} (99%) rename tests/compiler/std/{object.optimized.wat => object.release.wat} (100%) rename tests/compiler/std/{operator-overloading.untouched.wat => operator-overloading.debug.wat} (96%) rename tests/compiler/std/{operator-overloading.optimized.wat => operator-overloading.release.wat} (99%) create mode 100644 tests/compiler/std/pointer.debug.wat delete mode 100644 tests/compiler/std/pointer.optimized.wat create mode 100644 tests/compiler/std/pointer.release.wat delete mode 100644 tests/compiler/std/pointer.untouched.wat rename tests/compiler/std/{polyfills.untouched.wat => polyfills.debug.wat} (100%) rename tests/compiler/std/{polyfills.optimized.wat => polyfills.release.wat} (100%) rename tests/compiler/std/{set.untouched.wat => set.debug.wat} (92%) rename tests/compiler/std/{set.optimized.wat => set.release.wat} (90%) delete mode 100644 tests/compiler/std/simd.ts create mode 100644 tests/compiler/std/static-array.debug.wat rename tests/compiler/std/{static-array.optimized.wat => static-array.release.wat} (62%) delete mode 100644 tests/compiler/std/static-array.untouched.wat rename tests/compiler/std/{staticarray.untouched.wat => staticarray.debug.wat} (86%) rename tests/compiler/std/{staticarray.optimized.wat => staticarray.release.wat} (80%) rename tests/compiler/std/{string-casemapping.untouched.wat => string-casemapping.debug.wat} (88%) rename tests/compiler/std/{string-casemapping.optimized.wat => string-casemapping.release.wat} (65%) rename tests/compiler/std/{string-encoding.untouched.wat => string-encoding.debug.wat} (84%) rename tests/compiler/std/{string-encoding.optimized.wat => string-encoding.release.wat} (87%) create mode 100644 tests/compiler/std/string-nonnull.debug.wat rename tests/{resolve-ternary.json => compiler/std/string-nonnull.json} (100%) create mode 100644 tests/compiler/std/string-nonnull.release.wat create mode 100644 tests/compiler/std/string-nonnull.ts rename tests/compiler/std/{string.untouched.wat => string.debug.wat} (95%) rename tests/compiler/std/{string.optimized.wat => string.release.wat} (84%) rename tests/compiler/std/{symbol.untouched.wat => symbol.debug.wat} (79%) rename tests/compiler/std/{symbol.optimized.wat => symbol.release.wat} (79%) rename tests/compiler/std/{trace.untouched.wat => trace.debug.wat} (100%) rename tests/compiler/std/{trace.optimized.wat => trace.release.wat} (100%) rename tests/compiler/std/{typedarray.untouched.wat => typedarray.debug.wat} (97%) rename tests/compiler/std/{typedarray.optimized.wat => typedarray.release.wat} (89%) rename tests/compiler/std/{uri.untouched.wat => uri.debug.wat} (79%) rename tests/compiler/std/{uri.optimized.wat => uri.release.wat} (74%) rename tests/compiler/{super-inline.untouched.wat => super-inline.debug.wat} (91%) rename tests/compiler/{super-inline.optimized.wat => super-inline.release.wat} (99%) rename tests/compiler/{switch.untouched.wat => switch.debug.wat} (100%) rename tests/compiler/{switch.optimized.wat => switch.release.wat} (100%) rename tests/compiler/{tablebase.untouched.wat => tablebase.debug.wat} (97%) rename tests/compiler/{tablebase.optimized.wat => tablebase.release.wat} (100%) rename tests/compiler/{templateliteral.untouched.wat => templateliteral.debug.wat} (82%) rename tests/compiler/{templateliteral.optimized.wat => templateliteral.release.wat} (76%) rename tests/compiler/{ternary.untouched.wat => ternary.debug.wat} (100%) rename tests/compiler/{ternary.optimized.wat => ternary.release.wat} (100%) rename tests/compiler/{throw.untouched.wat => throw.debug.wat} (99%) rename tests/compiler/{throw.optimized.wat => throw.release.wat} (98%) rename tests/compiler/{typealias.untouched.wat => typealias.debug.wat} (100%) rename tests/compiler/{typealias.optimized.wat => typealias.release.wat} (100%) rename tests/compiler/{typeof.untouched.wat => typeof.debug.wat} (92%) rename tests/compiler/{typeof.optimized.wat => typeof.release.wat} (96%) rename tests/compiler/{unary.untouched.wat => unary.debug.wat} (100%) rename tests/compiler/{unary.optimized.wat => unary.release.wat} (100%) rename tests/compiler/{unify-local-flags.untouched.wat => unify-local-flags.debug.wat} (100%) rename tests/compiler/{unify-local-flags.optimized.wat => unify-local-flags.release.wat} (100%) delete mode 100644 tests/compiler/unknown-bool-ident.untouched.wat rename tests/compiler/{void.untouched.wat => void.debug.wat} (100%) rename tests/compiler/{void.optimized.wat => void.release.wat} (100%) rename tests/compiler/wasi/{abort.untouched.wat => abort.debug.wat} (80%) rename tests/compiler/wasi/{abort.optimized.wat => abort.release.wat} (99%) rename tests/compiler/wasi/{seed.untouched.wat => seed.debug.wat} (99%) rename tests/compiler/wasi/{seed.optimized.wat => seed.release.wat} (98%) rename tests/compiler/wasi/{snapshot_preview1.untouched.wat => snapshot_preview1.debug.wat} (98%) rename tests/compiler/wasi/{snapshot_preview1.optimized.wat => snapshot_preview1.release.wat} (100%) rename tests/compiler/wasi/{trace.untouched.wat => trace.debug.wat} (78%) rename tests/compiler/wasi/{trace.optimized.wat => trace.release.wat} (77%) rename tests/compiler/{while.untouched.wat => while.debug.wat} (93%) rename tests/compiler/{while.optimized.wat => while.release.wat} (99%) delete mode 100644 tests/decompiler.js delete mode 100644 tests/extension/assembly/index.as delete mode 100644 tests/extension/assembly/other.as delete mode 100644 tests/extension/package.json create mode 100644 tests/import/index.ts delete mode 100644 tests/packages/.gitignore delete mode 100644 tests/packages/package.json delete mode 100644 tests/packages/packages/a/assembly/a.ts delete mode 100644 tests/packages/packages/a/assembly/index.ts delete mode 100644 tests/packages/packages/as/as/as.ts delete mode 100644 tests/packages/packages/as/as/index.ts delete mode 100644 tests/packages/packages/as/package.json delete mode 100644 tests/packages/packages/b/assembly/b.ts delete mode 100644 tests/packages/packages/b/assembly/index.ts delete mode 100644 tests/packages/packages/b/node_modules/a/assembly/a.ts delete mode 100644 tests/packages/packages/b/node_modules/a/assembly/index.ts delete mode 100644 tests/packages/packages/c/assembly/c.ts delete mode 100644 tests/packages/packages/c/assembly/index.ts delete mode 100644 tests/packages/packages/c/node_modules/b/assembly/b.ts delete mode 100644 tests/packages/packages/c/node_modules/b/assembly/index.ts delete mode 100644 tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts delete mode 100644 tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts delete mode 100644 tests/packages/packages/d/assembly/d.ts delete mode 100644 tests/packages/packages/d/assembly/index.ts delete mode 100644 tests/packages/packages/d/node_modules/as/notassembly/as.ts delete mode 100644 tests/packages/packages/d/node_modules/as/notassembly/index.ts delete mode 100644 tests/packages/packages/d/node_modules/as/package.json delete mode 100644 tests/packages/packages/d/node_modules/c/assembly/c.ts delete mode 100644 tests/packages/packages/d/node_modules/c/assembly/index.ts delete mode 100644 tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts delete mode 100644 tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts delete mode 100644 tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts delete mode 100644 tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts delete mode 100644 tests/packages/packages/d/packages/e/assembly/e.ts delete mode 100644 tests/packages/packages/d/packages/e/assembly/index.ts delete mode 100644 tests/packages/packages/d/packages/e/packages/f/assembly/f.ts delete mode 100644 tests/packages/packages/d/packages/e/packages/f/assembly/index.ts delete mode 100644 tests/packages/packages/g/assembly/g.ts delete mode 100644 tests/packages/packages/g/assembly/index.ts delete mode 100644 tests/packages/packages/g/node_modules/c/assembly/c.ts delete mode 100644 tests/packages/packages/g/node_modules/c/assembly/index.ts delete mode 100644 tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts delete mode 100644 tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts delete mode 100644 tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts delete mode 100644 tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts delete mode 100644 tests/packages/packages/g/test.js delete mode 100644 tests/packages/packages/h/assembly/index.ts delete mode 100644 tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts delete mode 100644 tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts delete mode 100644 tests/packages/tsconfig.json create mode 100644 tests/parser/module.ts create mode 100644 tests/parser/module.ts.fixture.ts delete mode 100644 tests/require/index-release.ts delete mode 100644 tests/require/index.ts create mode 100644 tests/transform/cjs/index.js create mode 100644 tests/transform/cjs/package.json create mode 100644 tests/transform/cjs/simple.js create mode 100644 tests/transform/index.js create mode 100644 tests/transform/simple.js delete mode 100644 tests/util-path.js delete mode 100644 tests/util/diff.js delete mode 100644 tsconfig-docs.json create mode 100644 util/README.md create mode 100644 util/browser/fs.js create mode 100644 util/browser/module.js create mode 100644 util/browser/path.js rename {cli/shim => util/browser}/process.js (78%) create mode 100644 util/browser/url.js create mode 100644 util/cpu.d.ts create mode 100644 util/cpu.js create mode 100644 util/find.d.ts rename {cli/util => util}/find.js (78%) create mode 100644 util/node.d.ts create mode 100644 util/node.js rename {cli/util => util}/options.d.ts (92%) rename {cli/util => util}/options.js (90%) create mode 100644 util/terminal.d.ts create mode 100644 util/terminal.js create mode 100644 util/text.d.ts create mode 100644 util/text.js rename {lib/parse/src => util}/tsconfig.json (50%) create mode 100644 util/web.d.ts create mode 100644 util/web.js delete mode 100644 webpack.config.js diff --git a/.eslintignore b/.eslintignore index 1f981fe5e5..bb97247b6a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,8 +1,7 @@ dist/ -docs/ lib/binaryen.js lib/parse/index.js -out/ +build/ raw/ tests/parser/ diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 97% rename from .eslintrc.js rename to .eslintrc.cjs index 24129405b9..3ba62e3992 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -1,3 +1,5 @@ +/* global module */ + module.exports = { root: true, parser: "@typescript-eslint/parser", @@ -15,9 +17,14 @@ module.exports = { ecmaFeatures: {} }, globals: { + "globalThis": "readonly", "BigInt64Array": "readonly", "BigUint64Array": "readonly", - "__non_webpack_require__": "readonly" + "WebAssembly": "readonly", + "FinalizationRegistry": "readonly", + "fetch": "readonly", + "URL": "readonly", + "console": "readonly" }, // === General rules ========================================================= @@ -218,8 +225,7 @@ module.exports = { { files: [ - "./index.d.ts", - "./index.release.d.ts", + "./dist/*.d.ts" ], rules: { // Our definitions are complicated, and all attempts to describe them diff --git a/.gitattributes b/.gitattributes index b817804567..219d8546ed 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,6 @@ bin/* text eol=lf dist/* binary scripts/*.sh eol=lf -lib/binaryen.js binary tests/compiler/std/string-encoding.ts eol=lf +src/bindings/js.ts eol=lf +src/bindings/tsd.ts eol=lf diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e29f68ecae..8e3cbb4925 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -47,6 +47,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: | + node ./scripts/prepublish if [ $(node -pe "require('./package.json').version") != "0.0.0" ]; then npx aspublish fi @@ -59,3 +60,4 @@ jobs: npm publish --access public fi cd ../.. + node ./scripts/prepublish --reset diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 48f1de832a..1d96735a6f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,12 +20,14 @@ jobs: else printf "\nOK: Distributions files have not been modified.\n"; fi - test: - name: "Compiler (Linux, node ${{ matrix.node_version }})" - runs-on: ubuntu-latest + compiler: + name: "Compiler (${{ matrix.os }}, node ${{ matrix.node_version }})" + runs-on: ${{ matrix.os }}-latest needs: check strategy: matrix: + os: ["ubuntu", "macos"] + # TODO: re-enable "windows", see https://github.com/npm/cli/issues/4234 node_version: ["current", "lts_latest"] steps: - uses: actions/checkout@v1.0.0 @@ -34,71 +36,19 @@ jobs: node-version: ${{ matrix.node_version }} - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Check sources - run: npm run check - - name: Test sources - run: npm test - - name: Build distribution files + - name: Build run: npm run build - - name: Update entry file - run: npm run prepare-ci - - name: Test distribution - run: npm test - - name: Test browser build - run: node tests/browser-asc - # see: https://github.com/npm/cli/issues/4234 - # test-windows: - # name: "Compiler (Windows, node current)" - # runs-on: windows-latest - # needs: check - # steps: - # - uses: actions/checkout@v1.0.0 - # - uses: dcodeIO/setup-node-nvm@master - # with: - # node-version: current - # - name: Install dependencies - # run: npm ci --no-audit - # - name: Clean distribution files - # run: npm run clean - # - name: Test sources - # run: npm test - # - name: Build distribution files - # run: npm run build - # - name: Update entry file - # run: npm run prepare-ci - # - name: Test distribution - # run: npm test - # - name: Test browser build - # run: node tests/browser-asc - test-macos: - name: "Compiler (MacOS, node current)" - runs-on: macos-latest - needs: check - steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master - with: - node-version: current - - name: Install dependencies - run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Test sources - run: npm test - - name: Build distribution files - run: npm run build - - name: Update entry file - run: npm run prepare-ci - - name: Test distribution + - name: Check + run: npm run check + - name: Test run: npm test - - name: Test browser build - run: node tests/browser-asc - test-bootstrap: - name: "Compiler (Bootstrap)" + bootstrap: + name: "Bootstrap (${{ matrix.target }})" runs-on: ubuntu-latest needs: check + strategy: + matrix: + target: ["debug", "release"] steps: - uses: actions/checkout@v1.0.0 - uses: dcodeIO/setup-node-nvm@master @@ -106,15 +56,13 @@ jobs: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Bootstrap the compiler - run: npm run bootstrap - - name: Run compiler tests (untouched-bootstrap) - run: npm run test:compiler -- --wasm out/assemblyscript.untouched-bootstrap.wasm - - name: Run compiler tests (optimized-bootstrap) - run: npm run test:compiler -- --wasm out/assemblyscript.optimized-bootstrap.wasm - test-features: + - name: Build + run: npm run build + - name: Bootstrap + run: npm run bootstrap:${{ matrix.target }} + - name: Test + run: npm run test:compiler -- --wasm build/assemblyscript.${{ matrix.target }}-bootstrap.js + features: name: "Features" runs-on: ubuntu-latest needs: check @@ -126,14 +74,14 @@ jobs: node-version: 18.0.0-v8-canary20211115037fd7ae8d - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean + - name: Build + run: npm run build - name: Test experimental features env: - ASC_FEATURES: threads,reference-types,bigint-integration,gc + ASC_FEATURES: threads,reference-types,gc,exception-handling run: | - npm run test:compiler rt/flags features/js-bigint-integration features/reference-types features/threads std-wasi/process std-wasi/crypto - test-runtimes: + npm run test:compiler features/threads features/reference-types features/gc features/exception-handling + runtimes: name: "Runtimes" runs-on: ubuntu-latest needs: check @@ -144,8 +92,8 @@ jobs: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean + - name: Build + run: npm run build - name: Test default allocator run: | cd tests/allocators/default @@ -158,7 +106,7 @@ jobs: npm run build cd .. npm test stub - test-loader: + loader: name: "Loader" runs-on: ubuntu-latest needs: check @@ -169,8 +117,8 @@ jobs: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean + - name: Build + run: npm run build - name: Test the loader run: | cd lib/loader diff --git a/.gitignore b/.gitignore index 2efb8995ec..98a3ba835b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,11 @@ -npm-debug.* -dist/ -docs/ node_modules/ -out/ +*debug.log +dist/ +build/ raw/ .history *.backup .vscode .idea +cli/index.generated.js +src/diagnosticMessages.generated.ts diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 9cd16c0d9e..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/README.md b/README.md index 2bf1efe242..072a69af0c 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,25 @@

Thanks to our sponsors!

-

Most of the core team members and most contributors do this open source work in their free time. If you use AssemblyScript for a serious task or plan to do so, and you'd like us to invest more time on it, please donate to our OpenCollective. By sponsoring this project, your logo will show up below. Thank you so much for your support!

+

Most of the maintainers and contributors do this open source work in their free time. If you use AssemblyScript for a serious task or plan to do so, and you'd like us to invest more time on it, please donate to our OpenCollective. By sponsoring this project, your logo will show up below. Thank you so much for your support!

Sponsor logos

+ +## Development instructions + +A development environment can be set up by cloning the repository: + +```sh +git clone https://github.com/AssemblyScript/assemblyscript.git +cd assemblyscript +npm install +npm link +``` + +The link step is optional and makes the development instance available globally. The full process is documented as part of the repository: + +* [Compiler instructions](./src) +* [Runtime instructions](./std/assembly/rt) +* [Test instructions](./tests) diff --git a/bin/asc b/bin/asc deleted file mode 100755 index 0b08d513b4..0000000000 --- a/bin/asc +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const tailArgs = process.argv.indexOf("--"); -if (~tailArgs) { - require("child_process").spawnSync( - process.argv[0], - process.argv.slice(tailArgs + 1).concat( - process.argv.slice(1, tailArgs) - ), - { stdio: "inherit" } - ); - return; -} - -try { require("source-map-support").install(); } catch (e) {} - -const asc = module.exports = require("../cli/asc.js"); -if (/\basc$/.test(process.argv[1])) { - asc.ready.then(() => process.exitCode = asc.main(process.argv.slice(2))); -} diff --git a/bin/asc.js b/bin/asc.js new file mode 100644 index 0000000000..a5b6e1227b --- /dev/null +++ b/bin/asc.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +const [ nodePath, thisPath, ...args ] = process.argv; +const nodeArgs = process.execArgv; + +const hasSourceMaps = nodeArgs.includes("--enable-source-maps"); +const posCustomArgs = args.indexOf("--"); +const isDeno = typeof Deno !== "undefined"; + +if (isDeno) { + process.on = function() { /* suppress 'not implemented' message */ }; +} + +if ((!hasSourceMaps || ~posCustomArgs) && !isDeno) { + if (!hasSourceMaps) { + nodeArgs.push("--enable-source-maps"); + } + if (~posCustomArgs) { + nodeArgs.push(...args.slice(posCustomArgs + 1)); + args.length = posCustomArgs; + } + (await import("child_process")).spawnSync( + nodePath, + [...nodeArgs, thisPath, ...args], + { stdio: "inherit" } + ); +} else { + const { error } = (await import("../dist/asc.js")).main(process.argv.slice(2), { + stdout: process.stdout, + stderr: process.stderr + }); + if (error) process.exitCode = 1; +} diff --git a/bin/asinit b/bin/asinit.js old mode 100755 new mode 100644 similarity index 52% rename from bin/asinit rename to bin/asinit.js index 9b38303e2f..5023e5c09a --- a/bin/asinit +++ b/bin/asinit.js @@ -1,10 +1,15 @@ #!/usr/bin/env node -const fs = require("fs"); -const path = require("path"); -const colors = require("../cli/util/colors"); -const version = require("../package.json").version; -const options = require("../cli/util/options"); +import fs from "fs"; +import path from "path"; +import { createRequire } from "module"; +import { fileURLToPath } from "url"; +import { stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); +const version = require("../package.json").version; // TODO const npmDefaultTest = "echo \"Error: no test specified\" && exit 1"; @@ -38,50 +43,44 @@ if (typeof process.env.npm_config_user_agent === "string") { const asinitOptions = { "help": { "category": "General", - "description": "Prints a help message.", + "description": "Prints this help message.", "type": "b", "alias": "h" }, "yes": { "category": "General", - "description": "Answers all questions with their default option for non-interactive usage.", + "description": [ + "Answers all questions with their default option", + "for non-interactive usage." + ], "type": "b", "alias": "y" - }, - "web": { - "category": "General", - "description": "Adds an index.html file that can load your module. (Disables node without --node/-n flag)", - "type": "b", - "alias": "w" - }, - "node": { - "category": "General", - "description": "Re-enables node files when using the --web/-w flag", - "type": "b", - "alias": "n" } }; -const cliOptions = options.parse(process.argv.slice(2), asinitOptions); +const cliOptions = optionsUtil.parse(process.argv.slice(2), asinitOptions); if (cliOptions.options.help || cliOptions.arguments.length === 0) printHelp(); -const useWeb = cliOptions.options.web; -const useNode = cliOptions.options.node || !useWeb; - function printHelp() { console.log([ "Sets up a new AssemblyScript project or updates an existing one.", - "For example, to create a new project in the current directory:", "", - " " + colors.cyan("asinit") + " .", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("asinit") + " directory [options]", + "", + stdoutColors.white("EXAMPLES"), + " " + stdoutColors.cyan("asinit") + " .", + " " + stdoutColors.cyan("asinit") + " ./newProject -y", + "", + stdoutColors.white("OPTIONS"), + optionsUtil.help(asinitOptions, { noCategories: true }) ].join("\n")); process.exit(0); } +const compilerDir = path.join(dirname, ".."); const projectDir = path.resolve(cliOptions.arguments[0]); -const compilerDir = path.join(__dirname, ".."); -const compilerVersion = require(path.join(compilerDir, "package.json")).version; const assemblyDir = path.join(projectDir, "assembly"); const tsconfigFile = path.join(assemblyDir, "tsconfig.json"); const asconfigFile = path.join(projectDir, "asconfig.json"); @@ -96,43 +95,31 @@ const testsDir = path.join(projectDir, "tests"); const gitignoreFile = path.join(buildDir, ".gitignore"); const packageFile = path.join(projectDir, "package.json"); -const indexHtml = path.join(projectDir, "index.html"); -const indexFile = path.join(projectDir, "index.js"); +const indexHtmlFile = path.join(projectDir, "index.html"); const testsIndexFile = path.join(testsDir, "index.js"); -const basePaths = [ +const paths = [ [assemblyDir, "Directory holding the AssemblyScript sources being compiled to WebAssembly."], [tsconfigFile, "TypeScript configuration inheriting recommended AssemblyScript settings."], [entryFile, "Example entry file being compiled to WebAssembly to get you started."], [buildDir, "Build artifact directory where compiled WebAssembly files are stored."], [gitignoreFile, "Git configuration that excludes compiled binaries from source control."], [asconfigFile, "Configuration file defining both a 'debug' and a 'release' target."], - [packageFile, "Package info containing the necessary commands to compile to WebAssembly."] + [packageFile, "Package info containing the necessary commands to compile to WebAssembly."], + [testsIndexFile, "Stater test to check that the module is functioning."], + [indexHtmlFile, "Starter HTML file that loads the module in a browser."] ]; -const nodePaths = [ - [indexFile, "Main file loading the WebAssembly module and exporting its exports."], - [testsIndexFile, "Example test to check that your module is indeed working."] -]; - -const webPaths = [ - [indexHtml, "Starter HTML file that loads your module."] -]; - -const paths = basePaths; -if (useNode) Array.prototype.push.apply(paths, nodePaths); -if (useWeb) Array.prototype.push.apply(paths, webPaths); - const formatPath = filePath => "./" + path.relative(projectDir, filePath).replace(/\\/g, "/"); console.log([ "Version: " + version, "", - colors.white([ + stdoutColors.white([ "This command will make sure that the following files exist in the project", "directory '" + projectDir + "':" ].join("\n")), - ...paths.map(([filePath, description]) => "\n " + colors.cyan(formatPath(filePath)) + "\n " + description), + ...paths.map(([filePath, description]) => "\n " + stdoutColors.cyan(formatPath(filePath)) + "\n " + description), "", "The command will try to update existing files to match the correct settings", "for this instance of the compiler in '" + compilerDir + "'.", @@ -153,57 +140,48 @@ function createProject(answer) { ensureGitignore(); ensurePackageJson(); ensureAsconfigJson(); - - if (useNode) { - ensureIndexJs(); - ensureTestsDirectory(); - ensureTestsIndexJs(); - } - - if (useWeb) { - ensureIndexHtml(); - } + ensureTestsDirectory(); + ensureTestsIndexJs(); + ensureIndexHtml(); console.log([ - colors.green("Done!"), + stdoutColors.green("Done!"), "", "Don't forget to install dependencies before you start:", "", - colors.white(" " + commands[pm].install), + stdoutColors.white(" " + commands[pm].install), "", - "To edit the entry file, open '" + colors.cyan("assembly/index.ts") + "' in your editor of choice.", + "To edit the entry file, open '" + stdoutColors.cyan("assembly/index.ts") + "' in your editor of choice.", "Create as many additional files as necessary and use them as imports.", "", "To build the entry file to WebAssembly when you are ready, run:", "", - colors.white(" " + commands[pm].run + " asbuild"), + stdoutColors.white(" " + commands[pm].run + " asbuild"), "", "Running the command above creates the following binaries incl. their respective", "text format representations and source maps:", "", - colors.cyan(" ./build/untouched.wasm"), - colors.cyan(" ./build/untouched.wasm.map"), - colors.cyan(" ./build/untouched.wat"), + stdoutColors.cyan(" ./build/debug.wasm"), + stdoutColors.cyan(" ./build/debug.wasm.map"), + stdoutColors.cyan(" ./build/debug.wat"), "", - " ^ The untouched WebAssembly module as generated by the compiler.", + " ^ The debuggable WebAssembly module as generated by the compiler.", " This one matches your sources exactly, without any optimizations.", "", - colors.cyan(" ./build/optimized.wasm"), - colors.cyan(" ./build/optimized.wasm.map"), - colors.cyan(" ./build/optimized.wat"), + stdoutColors.cyan(" ./build/release.wasm"), + stdoutColors.cyan(" ./build/release.wasm.map"), + stdoutColors.cyan(" ./build/release.wat"), "", " ^ The optimized WebAssembly module using default optimization settings.", - " You can change the optimization settings in '" + colors.cyan("package.json")+ "'.", + " You can change the optimization settings in '" + stdoutColors.cyan("package.json")+ "'.", + "", + "To run the tests, do:", + "", + stdoutColors.white(" " + commands[pm].test), "", - ...(useNode ? [ - "To run the tests, do:", - "", - colors.white(" " + commands[pm].test), - "" - ] : []), "The AssemblyScript documentation covers all the details:", "", - " https://docs.assemblyscript.org", + " https://www.assemblyscript.org", "", "Have a nice day!" ].join("\n")); @@ -216,7 +194,7 @@ if (cliOptions.options.yes) { input: process.stdin, output: process.stdout }); - rl.question(colors.white("Do you want to proceed?") + " [Y/n] ", result => { + rl.question(stdoutColors.white("Do you want to proceed?") + " [Y/n] ", result => { rl.close(); createProject(result); }); @@ -226,9 +204,9 @@ function ensureProjectDirectory() { console.log("- Making sure that the project directory exists..."); if (!fs.existsSync(projectDir)) { fs.mkdirSync(projectDir); - console.log(colors.green(" Created: ") + projectDir); + console.log(stdoutColors.green(" Created: ") + projectDir); } else { - console.log(colors.yellow(" Exists: ") + projectDir); + console.log(stdoutColors.yellow(" Exists: ") + projectDir); } console.log(); } @@ -237,9 +215,9 @@ function ensureAssemblyDirectory() { console.log("- Making sure that the 'assembly' directory exists..."); if (!fs.existsSync(assemblyDir)) { fs.mkdirSync(assemblyDir); - console.log(colors.green(" Created: ") + assemblyDir); + console.log(stdoutColors.green(" Created: ") + assemblyDir); } else { - console.log(colors.yellow(" Exists: ") + assemblyDir); + console.log(stdoutColors.yellow(" Exists: ") + assemblyDir); } console.log(); } @@ -254,13 +232,13 @@ function ensureTsconfigJson() { "./**/*.ts" ] }, null, 2)); - console.log(colors.green(" Created: ") + tsconfigFile); + console.log(stdoutColors.green(" Created: ") + tsconfigFile); } else { let tsconfig = JSON.parse(fs.readFileSync(tsconfigFile, "utf8")); tsconfig["extends"] = base; fs.writeFileSync(tsconfigFile, JSON.stringify(tsconfig, null, 2)); - console.log(colors.green(" Updated: ") + tsconfigFile); + console.log(stdoutColors.green(" Updated: ") + tsconfigFile); } console.log(); } @@ -271,16 +249,16 @@ function ensureAsconfigJson() { fs.writeFileSync(asconfigFile, JSON.stringify({ targets: { debug: { - // -b build/untouched.wasm -t build/untouched.wat --sourceMap --debug - binaryFile: "build/untouched.wasm", - textFile: "build/untouched.wat", + // -o build/debug.wasm -t build/debug.wat --sourceMap --debug + outFile: "build/debug.wasm", + textFile: "build/debug.wat", sourceMap: true, debug: true }, release: { - // -b build/optimized.wasm -t build/optimized.wat --sourceMap --optimize - binaryFile: "build/optimized.wasm", - textFile: "build/optimized.wat", + // -o build/release.wasm -t build/release.wat --sourceMap --optimize + outFile: "build/release.wasm", + textFile: "build/release.wat", sourceMap: true, optimizeLevel: 3, shrinkLevel: 0, @@ -288,11 +266,13 @@ function ensureAsconfigJson() { noAssert: false } }, - options: {} + options: { + bindings: "esm" + } }, null, 2)); - console.log(colors.green(" Created: ") + asconfigFile); + console.log(stdoutColors.green(" Created: ") + asconfigFile); } else { - console.log(colors.yellow(" Exists: ") + asconfigFile); + console.log(stdoutColors.yellow(" Exists: ") + asconfigFile); } console.log(); } @@ -307,9 +287,9 @@ function ensureEntryFile() { " return a + b;", "}" ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + entryFile); + console.log(stdoutColors.green(" Created: ") + entryFile); } else { - console.log(colors.yellow(" Exists: ") + entryFile); + console.log(stdoutColors.yellow(" Exists: ") + entryFile); } console.log(); } @@ -318,9 +298,9 @@ function ensureBuildDirectory() { console.log("- Making sure that the 'build' directory exists..."); if (!fs.existsSync(buildDir)) { fs.mkdirSync(buildDir); - console.log(colors.green(" Created: ") + buildDir); + console.log(stdoutColors.green(" Created: ") + buildDir); } else { - console.log(colors.yellow(" Exists: ") + buildDir); + console.log(stdoutColors.yellow(" Exists: ") + buildDir); } console.log(); } @@ -329,13 +309,12 @@ function ensureGitignore() { console.log("- Making sure that 'build/.gitignore' is set up..."); if (!fs.existsSync(gitignoreFile)) { fs.writeFileSync(gitignoreFile, [ - "*.wasm", - "*.wasm.map", - "*.asm.js" + "*", + "!.gitignore" ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + gitignoreFile); + console.log(stdoutColors.green(" Created: ") + gitignoreFile); } else { - console.log(colors.yellow(" Exists: ") + gitignoreFile); + console.log(stdoutColors.yellow(" Exists: ") + gitignoreFile); } console.log(); } @@ -343,94 +322,86 @@ function ensureGitignore() { function ensurePackageJson() { console.log("- Making sure that 'package.json' contains the build commands..."); const entryPath = path.relative(projectDir, entryFile).replace(/\\/g, "/"); - const buildUntouched = "asc " + entryPath + " --target debug"; - const buildOptimized = "asc " + entryPath + " --target release"; - const buildAll = commands[pm].run + " asbuild:untouched && " + commands[pm].run + " asbuild:optimized"; + const buildDebug = "asc " + entryPath + " --target debug"; + const buildRelease = "asc " + entryPath + " --target release"; + const buildAll = commands[pm].run + " asbuild:debug && " + commands[pm].run + " asbuild:release"; if (!fs.existsSync(packageFile)) { fs.writeFileSync(packageFile, JSON.stringify({ + "type": "module", + "exports": { + ".": { + "import": "./build/release.js", + "types": "./build/release.d.ts" + } + }, "scripts": { - "asbuild:untouched": buildUntouched, - "asbuild:optimized": buildOptimized, + "asbuild:debug": buildDebug, + "asbuild:release": buildRelease, "asbuild": buildAll, - ...(useNode && {"test": "node tests"}) + "test": "node tests", + "start": "npx serve ." }, - ...(useNode && { - "dependencies": { - "@assemblyscript/loader": "^" + compilerVersion - } - }), "devDependencies": { - "assemblyscript": "^" + compilerVersion + "assemblyscript": "^" + version } }, null, 2)); - console.log(colors.green(" Created: ") + packageFile); + console.log(stdoutColors.green(" Created: ") + packageFile); } else { let pkg = JSON.parse(fs.readFileSync(packageFile)); let scripts = pkg.scripts || {}; let updated = false; + if (!pkg["type"]) { + pkg["type"] = "module"; + updated = true; + } + if (!pkg["exports"]) { + pkg["exports"] = { + ".": { + "import": "./build/release.js", + "types": "./build/release.d.ts" + } + }; + } if (!scripts["asbuild"]) { - scripts["asbuild:untouched"] = buildUntouched; - scripts["asbuild:optimized"] = buildOptimized; + scripts["asbuild:debug"] = buildDebug; + scripts["asbuild:release"] = buildRelease; scripts["asbuild"] = buildAll; pkg["scripts"] = scripts; updated = true; } - if (!scripts["test"] || scripts["test"] == npmDefaultTest && useNode) { + if (!scripts["test"] || scripts["test"] == npmDefaultTest) { scripts["test"] = "node tests"; pkg["scripts"] = scripts; updated = true; } - let dependencies = pkg["dependencies"] || {}; - if (!dependencies["@assemblyscript/loader"] && useNode) { - dependencies["@assemblyscript/loader"] = "^" + compilerVersion; - pkg["dependencies"] = dependencies; + if (!scripts["start"]) { + scripts["start"] = "npx serve .", + pkg["scripts"] = scripts; updated = true; } let devDependencies = pkg["devDependencies"] || {}; if (!devDependencies["assemblyscript"]) { - devDependencies["assemblyscript"] = "^" + compilerVersion; + devDependencies["assemblyscript"] = "^" + version; pkg["devDependencies"] = devDependencies; updated = true; } if (updated) { fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2)); - console.log(colors.green(" Updated: ") + packageFile); + console.log(stdoutColors.green(" Updated: ") + packageFile); } else { - console.log(colors.yellow(" Exists: ") + packageFile); + console.log(stdoutColors.yellow(" Exists: ") + packageFile); } } console.log(); } -function ensureIndexJs() { - console.log("- Making sure that 'index.js' exists..."); - if (!fs.existsSync(indexFile)) { - // since node.js v13.2.0 or v12.17.0 we can use ESM without flags - const ver = process.versions.node.split('.'); - const maj = parseInt(ver[0]); - const min = parseInt(ver[1]); - const supportESM = maj >= 14 || (maj == 13 && min >= 2) || (maj == 12 && min >= 17); - fs.writeFileSync(indexFile, [ - "const fs = require(\"fs\");", - "const loader = require(\"@assemblyscript/loader" + (supportESM ? "" : "/umd") + "\");", - "const imports = { /* imports go here */ };", - "const wasmModule = loader.instantiateSync(fs.readFileSync(__dirname + \"/build/optimized.wasm\"), imports);", - "module.exports = wasmModule.exports;" - ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + indexFile); - } else { - console.log(colors.yellow(" Exists: ") + indexFile); - } - console.log(); -} - function ensureTestsDirectory() { console.log("- Making sure that the 'tests' directory exists..."); if (!fs.existsSync(testsDir)) { fs.mkdirSync(testsDir); - console.log(colors.green(" Created: ") + testsDir); + console.log(stdoutColors.green(" Created: ") + testsDir); } else { - console.log(colors.yellow(" Exists: ") + testsDir); + console.log(stdoutColors.yellow(" Exists: ") + testsDir); } console.log(); } @@ -439,45 +410,36 @@ function ensureTestsIndexJs() { console.log("- Making sure that 'tests/index.js' exists..."); if (!fs.existsSync(testsIndexFile)) { fs.writeFileSync(testsIndexFile, [ - "const assert = require(\"assert\");", - "const myModule = require(\"..\");", - "assert.strictEqual(myModule.add(1, 2), 3);", + "import assert from \"assert\";", + "import { add } from \"../build/debug.js\";", + "assert.strictEqual(add(1, 2), 3);", "console.log(\"ok\");" ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + testsIndexFile); + console.log(stdoutColors.green(" Created: ") + testsIndexFile); } else { - console.log(colors.yellow(" Exists: ") + testsIndexFile); + console.log(stdoutColors.yellow(" Exists: ") + testsIndexFile); } console.log(); } function ensureIndexHtml() { console.log("- Making sure that 'index.html' exists..."); - if (!fs.existsSync(indexHtml)) { - fs.writeFileSync(indexHtml, [ + if (!fs.existsSync(indexHtmlFile)) { + fs.writeFileSync(indexHtmlFile, [ "", "", - " ", - " ", - " ", - " ", - " ", + "", + "", + "", + "", "", ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + indexHtml); + console.log(stdoutColors.green(" Created: ") + indexHtmlFile); } else { - console.log(colors.yellow(" Exists: ") + indexHtml); + console.log(stdoutColors.yellow(" Exists: ") + indexHtmlFile); } console.log(); -} \ No newline at end of file +} diff --git a/cli/README.md b/cli/README.md index 6033f60451..9e048005e3 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1,5 +1,5 @@ -Compiler frontend for node.js -============================= +Frontend for Node.js +==================== Usage ----- @@ -13,41 +13,46 @@ $> asc --help API --- -The API accepts the same options as the CLI but also lets you override stdout and stderr and/or provide a callback. Example: +The API accepts the same options as the CLI but also lets you override stdout and stderr. Example: ```js -const asc = require("assemblyscript/cli/asc"); -asc.ready.then(() => { - asc.main([ - "myModule.ts", - "--binaryFile", "myModule.wasm", - "--optimize", - "--sourceMap", - "--measure" - ], { - stdout: process.stdout, - stderr: process.stderr - }, function(err) { - if (err) - throw err; - ... - }); -}); +import asc from "assemblyscript/asc"; + +const { error, stdout } = await asc.main([ + "myModule.ts", + "--outFile", "myModule.wasm", + "--optimize", + "--sourceMap", + "--stats" +]); +if (error) { + console.log("Compilation failed: " + error.message); +} else { + console.log(stdout.toString()); +} ``` -Available command line options can also be obtained programmatically: +The result has the following structure: + +| Property | Description +|----------|------------- +| error | Encountered error, if any +| stdout | Standard output stream +| stderr | Standard error stream +| stats | Statistics + +You can also compile a single source string directly (note that this API has limited functionality): ```js -const options = require("assemblyscript/cli/asc.json"); +import asc from "assemblyscript/asc"; +const { binary, text, stdout, stderr } = await asc.compileString(`...`, { optimize: 2 }); ... ``` -You can also compile a source string directly, for example in a browser environment: + +Available command line options can also be obtained programmatically: ```js -const asc = require("assemblyscript/cli/asc"); -asc.ready.then(() => { - const { binary, text, stdout, stderr } = asc.compileString(`...`, { optimize: 2 }); -}); +import { options } from "assemblyscript/asc"; ... ``` diff --git a/cli/asc.js b/cli/asc.js deleted file mode 100644 index 3c47266c2a..0000000000 --- a/cli/asc.js +++ /dev/null @@ -1,1532 +0,0 @@ -/** - * @license - * Copyright 2020 Daniel Wirtz / The AssemblyScript Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Compiler frontend for node.js - * - * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to - * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources - * directly through ts-node if distribution files are not present. - * - * Can also be packaged as a bundle suitable for in-browser use with the standard library injected - * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details. - */ - -/* global BUNDLE_VERSION, BUNDLE_LIBRARY, BUNDLE_DEFINITIONS */ - -const fs = require("fs"); -const path = require("path"); -const process = require("process"); // ensure shim -const utf8 = require("./util/utf8"); -const colorsUtil = require("./util/colors"); -const optionsUtil = require("./util/options"); -const mkdirp = require("./util/mkdirp"); -const find = require("./util/find"); -const binaryen = global.binaryen || (global.binaryen = require("binaryen")); - -const dynrequire = typeof __webpack_require__ === "function" - ? __non_webpack_require__ - : require; - -const WIN = process.platform === "win32"; -const EOL = WIN ? "\r\n" : "\n"; -const SEP = WIN ? "\\" : "/"; - -function toUpperSnakeCase(str) { - return str.replace(/-/g, "_").toUpperCase(); -} - -// Sets up an extension with its definition counterpart and relevant regexes. -function setupExtension(ext) { - if (!ext.startsWith(".")) ext = `.${ext}`; - return { - ext, - ext_d: `.d${ext}`, - re: new RegExp("\\" + ext + "$"), - re_d: new RegExp("\\.d\\" + ext + "$"), - re_except_d: new RegExp("^(?!.*\\.d\\" + ext + "$).*\\" + ext + "$"), - re_index: new RegExp("(?:^|[\\\\\\/])index\\" + ext + "$") - }; -} - -const defaultExtension = setupExtension(".ts"); - -// Proxy Binaryen's ready event -Object.defineProperty(exports, "ready", { - get() { return binaryen.ready; } -}); - -// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional -// useless code fragment on top of an actual error. suppress this: -if (process.removeAllListeners) { - process.removeAllListeners("uncaughtException"); -} - -// Use distribution files if present, otherwise run the sources directly. -function loadAssemblyScriptJS() { - var exports, tsNode; - try { - // note that this case will always trigger in recent node.js versions for typical installs - // see: https://nodejs.org/api/packages.html#packages_self_referencing_a_package_using_its_name - exports = require("assemblyscript"); - } catch (e) { - try { // `asc` on the command line (unnecessary in recent node) - exports = dynrequire("../dist/assemblyscript.js"); - } catch (e) { - try { // `asc` on the command line without dist files (unnecessary in recent node) - tsNode = dynrequire("ts-node"); - tsNode.register({ - project: path.join(__dirname, "..", "src", "tsconfig.json"), - typeCheck: false, - transpileOnly: true, - compilerHost: true, - files: true, - skipIgnore: true, - moduleTypes: { - "../src/glue/js/*": "cjs" - }, - compilerOptions: { - module: "esnext", - target: "es2017" - } - }); - dynrequire("../src/glue/js"); - exports = dynrequire("../src"); - } catch (e_ts) { - if (!tsNode || !(e_ts instanceof tsNode.TSError)) { - try { // `require("dist/asc.js")` in explicit browser tests - exports = dynrequire("./assemblyscript"); - } catch (e) { - throw Error(`${e_ts.stack}\n---\n${e.stack}`); - } - } else { - throw e_ts; - } - } - } - } - return exports; -} - -// Loads the specified bootstrapped Wasm binary of the compiler. -function loadAssemblyScriptWasm(binaryPath) { - const loader = require("../lib/loader/umd/index"); - const rtrace = new (require("../lib/rtrace/umd/index").Rtrace)({ - onerror(err, info) { - console.log(err, info); - }, - getMemory() { - return exports.memory; - }, - oncollect() { - var gcProfile = rtrace.gcProfile; - if (gcProfile && gcProfile.length && fs.writeFileSync) { - let timestamp = Date.now(); - fs.writeFileSync( - `rtrace-gc-profile-${timestamp}.json`, - JSON.stringify(gcProfile) - ); - fs.writeFileSync( - `rtrace-gc-profile-${timestamp}.csv`, - `time,memory,pause\n${gcProfile.join("\n")}` - ); - } - } - }); - var { exports } = loader.instantiateSync(fs.readFileSync(binaryPath), rtrace.install({ binaryen })); - if (exports._start) exports._start(); - return exports; -} - -/** Ensures that an object is a wrapper class instead of just a pointer. */ -function __wrap(ptrOrObj, wrapperClass) { - if (typeof ptrOrObj === "number") { - return ptrOrObj === 0 ? null : wrapperClass.wrap(ptrOrObj); - } - return ptrOrObj; -} - -var assemblyscript, __newString, __getString, __pin, __unpin, __collect; - -function loadAssemblyScript() { - const wasmArg = process.argv.findIndex(arg => arg == "--wasm"); - if (~wasmArg) { - let binaryPath = process.argv[wasmArg + 1]; - process.argv.splice(wasmArg, 2); - assemblyscript = loadAssemblyScriptWasm(binaryPath); - __newString = assemblyscript.__newString; - __getString = assemblyscript.__getString; - __pin = assemblyscript.__pin; - __unpin = assemblyscript.__unpin; - __collect = assemblyscript.__collect; - } else { - assemblyscript = loadAssemblyScriptJS(); - __newString = str => str; - __getString = ptr => ptr; - __pin = ptr => ptr; - __unpin = _ => undefined; - __collect = _ => undefined; - } -} -loadAssemblyScript(); - -/** Whether this is a webpack bundle or not. */ -exports.isBundle = typeof BUNDLE_VERSION === "string"; - -/** AssemblyScript version. */ -exports.version = exports.isBundle ? BUNDLE_VERSION : dynrequire("../package.json").version; - -/** Available CLI options. */ -exports.options = require("./asc.json"); - -/** Prefix used for library files. */ -exports.libraryPrefix = __getString(assemblyscript.LIBRARY_PREFIX.valueOf()); - -/** Default Binaryen optimization level. */ -exports.defaultOptimizeLevel = 3; - -/** Default Binaryen shrink level. */ -exports.defaultShrinkLevel = 0; - -/** Bundled library files. */ -exports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle - const libDir = path.join(__dirname, "..", "std", "assembly"); - const bundled = {}; - find - .files(libDir, defaultExtension.re_except_d) - .forEach(file => { - bundled[file.replace(defaultExtension.re, "")] = fs.readFileSync(path.join(libDir, file), "utf8"); - }); - return bundled; -})(); - -/** Bundled definition files. */ -exports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle - const readDefinition = name => fs.readFileSync( - path.join(__dirname, "..", "std", name, `index${defaultExtension.ext_d}`), - "utf8" - ); - return { - assembly: readDefinition("assembly"), - portable: readDefinition("portable") - }; -})(); - -/** Convenience function that parses and compiles source strings directly. */ -exports.compileString = (sources, options) => { - if (typeof sources === "string") sources = { [`input${defaultExtension.ext}`]: sources }; - const output = Object.create({ - stdout: createMemoryStream(), - stderr: createMemoryStream() - }); - var argv = [ - "--binaryFile", "binary", - "--textFile", "text", - ]; - Object.keys(options || {}).forEach(key => { - var val = options[key]; - var opt = exports.options[key]; - if (opt && opt.type === "b") { - if (val) argv.push(`--${key}`); - } else { - if (Array.isArray(val)) { - val.forEach(val => { argv.push(`--${key}`, String(val)); }); - } - else argv.push(`--${key}`, String(val)); - } - }); - exports.main(argv.concat(Object.keys(sources)), { - stdout: output.stdout, - stderr: output.stderr, - readFile: name => Object.prototype.hasOwnProperty.call(sources, name) ? sources[name] : null, - writeFile: (name, contents) => { output[name] = contents; }, - listFiles: () => [] - }); - return output; -}; - -/** Runs the command line utility using the specified arguments array. */ -exports.main = function main(argv, options, callback) { - if (typeof options === "function") { - callback = options; - options = {}; - } else if (!options) { - options = {}; - } - - // Bundle semantic version - let bundleMinorVersion = 0, bundleMajorVersion = 0, bundlePatchVersion = 0; - const versionParts = (exports.version || "").split("."); - if (versionParts.length === 3) { - bundleMajorVersion = parseInt(versionParts[0]) | 0; - bundleMinorVersion = parseInt(versionParts[1]) | 0; - bundlePatchVersion = parseInt(versionParts[2]) | 0; - } - - const stdout = options.stdout || process.stdout; - const stderr = options.stderr || process.stderr; - const readFile = options.readFile || readFileNode; - const writeFile = options.writeFile || writeFileNode; - const listFiles = options.listFiles || listFilesNode; - const stats = options.stats || createStats(); - let extension = defaultExtension; - - // Output must be specified if not present in the environment - if (!stdout) throw Error("'options.stdout' must be specified"); - if (!stderr) throw Error("'options.stderr' must be specified"); - - // Parse command line options but do not populate option defaults yet - const optionsResult = optionsUtil.parse(argv, exports.options, false); - let opts = optionsResult.options; - argv = optionsResult.arguments; - - if (opts.noColors) { - colorsUtil.stdout.supported = - colorsUtil.stderr.supported = false; - } else { - colorsUtil.stdout = colorsUtil.from(stdout); - colorsUtil.stderr = colorsUtil.from(stderr); - } - - // Check for unknown options - const unknownOpts = optionsResult.unknown; - if (unknownOpts.length) { - unknownOpts.forEach(arg => { - stderr.write( - `${colorsUtil.stderr.yellow("WARNING ")}Unknown option '${arg}'%{EOL}` - ); - }); - } - - // Check for trailing arguments - const trailingArgv = optionsResult.trailing; - if (trailingArgv.length) { - stderr.write( - `${colorsUtil.stderr.yellow("WARNING ")}Unsupported trailing arguments: ${trailingArgv.join(" ")}${EOL}` - ); - } - - // Use default callback if none is provided - if (!callback) callback = function defaultCallback(err) { - var code = 0; - if (err) { - stderr.write(`${colorsUtil.stderr.red("FAILURE ")}${err.stack.replace(/^ERROR: /i, "")}${EOL}`); - code = 1; - } - return code; - }; - - // Just print the version if requested - if (opts.version) { - stdout.write(`Version ${exports.version}${EOL}`); - return callback(null); - } - - // Use another extension if requested - if (typeof opts.extension === "string") { - if (/^\.?[0-9a-zA-Z]{1,14}$/.test(opts.extension)) { - extension = setupExtension(opts.extension); - } else { - return callback(Error(`Invalid extension: ${opts.extension}`)); - } - } - - // Set up base directory - const baseDir = path.normalize(opts.baseDir || "."); - - // Check if a config file is present - let asconfigPath = optionsUtil.resolvePath(opts.config || "asconfig.json", baseDir); - let asconfigFile = path.basename(asconfigPath); - let asconfigDir = path.dirname(asconfigPath); - let asconfig = getAsconfig(asconfigFile, asconfigDir, readFile); - let asconfigHasEntries = asconfig != null && Array.isArray(asconfig.entries) && asconfig.entries.length; - - // Print the help message if requested or no source files are provided - if (opts.help || (!argv.length && !asconfigHasEntries)) { - var out = opts.help ? stdout : stderr; - var color = opts.help ? colorsUtil.stdout : colorsUtil.stderr; - out.write([ - color.white("SYNTAX"), - " " + color.cyan("asc") + " [entryFile ...] [options]", - "", - color.white("EXAMPLES"), - " " + color.cyan("asc") + " hello" + extension.ext, - " " + color.cyan("asc") + " hello" + extension.ext + " -b hello.wasm -t hello.wat", - " " + color.cyan("asc") + " hello1" + extension.ext + " hello2" + extension.ext + " -b -O > hello.wasm", - " " + color.cyan("asc") + " --config asconfig.json --target release", - "", - color.white("OPTIONS"), - ].concat( - optionsUtil.help(exports.options, 24, EOL) - ).join(EOL) + EOL); - return callback(null); - } - - // I/O must be specified if not present in the environment - if (!fs.readFileSync) { - if (readFile === readFileNode) throw Error("'options.readFile' must be specified"); - if (writeFile === writeFileNode) throw Error("'options.writeFile' must be specified"); - if (listFiles === listFilesNode) throw Error("'options.listFiles' must be specified"); - } - - // Load additional options from asconfig.json - const seenAsconfig = new Set(); - seenAsconfig.add(asconfigPath); - const target = opts.target || "release"; - while (asconfig) { - // Merge target first - if (asconfig.targets) { - const targetOptions = asconfig.targets[target]; - if (targetOptions) { - opts = optionsUtil.merge(exports.options, opts, targetOptions, asconfigDir); - } - } - // Merge general options - const generalOptions = asconfig.options; - if (generalOptions) { - opts = optionsUtil.merge(exports.options, opts, generalOptions, asconfigDir); - } - - // Append entries - if (asconfig.entries) { - for (let entry of asconfig.entries) { - argv.push(optionsUtil.resolvePath(entry, asconfigDir)); - } - } - - // Look up extended asconfig and repeat - if (asconfig.extends) { - asconfigPath = optionsUtil.resolvePath(asconfig.extends, asconfigDir, true); - asconfigFile = path.basename(asconfigPath); - asconfigDir = path.dirname(asconfigPath); - if (seenAsconfig.has(asconfigPath)) break; - seenAsconfig.add(asconfigPath); - asconfig = getAsconfig(asconfigFile, asconfigDir, readFile); - } else { - break; - } - } - - // Populate option defaults once user-defined options are set - optionsUtil.addDefaults(exports.options, opts); - - // If showConfig print options and exit - if (opts.showConfig) { - stderr.write(JSON.stringify({ - options: opts, - entries: argv - }, null, 2)); - return callback(null); - } - - // create a unique set of values - function unique(values) { - return [...new Set(values)]; - } - - // Set up options - var program, runtime; - const compilerOptions = __pin(assemblyscript.newOptions()); - switch (opts.runtime) { - case "stub": runtime = 0; break; - case "minimal": runtime = 1; break; - default: runtime = 2; break; - } - assemblyscript.setTarget(compilerOptions, 0); - assemblyscript.setRuntime(compilerOptions, runtime); - assemblyscript.setNoAssert(compilerOptions, opts.noAssert); - assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); - assemblyscript.setImportMemory(compilerOptions, opts.importMemory); - assemblyscript.setInitialMemory(compilerOptions, opts.initialMemory >>> 0); - assemblyscript.setMaximumMemory(compilerOptions, opts.maximumMemory >>> 0); - assemblyscript.setSharedMemory(compilerOptions, opts.sharedMemory); - assemblyscript.setImportTable(compilerOptions, opts.importTable); - assemblyscript.setExportTable(compilerOptions, opts.exportTable); - assemblyscript.setExplicitStart(compilerOptions, opts.explicitStart); - assemblyscript.setMemoryBase(compilerOptions, opts.memoryBase >>> 0); - assemblyscript.setTableBase(compilerOptions, opts.tableBase >>> 0); - assemblyscript.setSourceMap(compilerOptions, opts.sourceMap != null); - assemblyscript.setNoUnsafe(compilerOptions, opts.noUnsafe); - assemblyscript.setPedantic(compilerOptions, opts.pedantic); - assemblyscript.setLowMemoryLimit(compilerOptions, opts.lowMemoryLimit >>> 0); - assemblyscript.setExportRuntime(compilerOptions, opts.exportRuntime); - assemblyscript.setBundleVersion(compilerOptions, bundleMajorVersion, bundleMinorVersion, bundlePatchVersion); - if (!opts.stackSize && opts.runtime == "incremental") { - opts.stackSize = assemblyscript.DEFAULT_STACK_SIZE; - } - assemblyscript.setStackSize(compilerOptions, opts.stackSize); - - // Instrument callback to perform GC - callback = (function(callback) { - return function wrappedCallback(err) { - __unpin(compilerOptions); - if (program) __unpin(program); - __collect(); - return callback(err); - }; - })(callback); - - // Add or override aliases if specified - if (opts.use) { - let aliases = opts.use; - for (let i = 0, k = aliases.length; i < k; ++i) { - let part = aliases[i]; - let p = part.indexOf("="); - if (p < 0) return callback(Error(`Global alias '${part}' is invalid.`)); - let alias = part.substring(0, p).trim(); - let name = part.substring(p + 1).trim(); - if (!alias.length) { - return callback(Error(`Global alias '${part}' is invalid.`)); - } - { - let aliasPtr = __pin(__newString(alias)); - let namePtr = __newString(name); - assemblyscript.setGlobalAlias(compilerOptions, aliasPtr, namePtr); - __unpin(aliasPtr); - } - } - } - - // Disable default features if specified - var features; - if ((features = opts.disable) != null) { - if (typeof features === "string") features = features.split(","); - for (let i = 0, k = features.length; i < k; ++i) { - let name = features[i].trim(); - let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; - if (!flag) return callback(Error(`Feature '${name}' is unknown.`)); - assemblyscript.disableFeature(compilerOptions, flag); - } - } - - // Enable experimental features if specified - if ((features = opts.enable) != null) { - if (typeof features === "string") features = features.split(","); - for (let i = 0, k = features.length; i < k; ++i) { - let name = features[i].trim(); - let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; - if (!flag) return callback(Error(`Feature '${name}' is unknown.`)); - assemblyscript.enableFeature(compilerOptions, flag); - } - } - - // Set up optimization levels - var optimizeLevel = 0; - var shrinkLevel = 0; - if (opts.optimize) { - optimizeLevel = exports.defaultOptimizeLevel; - shrinkLevel = exports.defaultShrinkLevel; - } - if (typeof opts.optimizeLevel === "number") optimizeLevel = opts.optimizeLevel; - if (typeof opts.shrinkLevel === "number") shrinkLevel = opts.shrinkLevel; - optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3); - shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2); - assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel); - - // Initialize the program - program = __pin(assemblyscript.newProgram(compilerOptions)); - - // Collect transforms *constructors* from the `--transform` CLI flag as well - // as the `transform` option into the `transforms` array. - let transforms = []; - // `transform` option from `main()` - if (Array.isArray(options.transforms)) { - transforms.push(...options.transforms); - } - // `--transform` CLI flag - if (opts.transform) { - let tsNodeRegistered = false; - let transformArgs = unique(opts.transform); - for (let i = 0, k = transformArgs.length; i < k; ++i) { - let filename = transformArgs[i].trim(); - if (!tsNodeRegistered && filename.endsWith(".ts")) { // ts-node requires .ts specifically - dynrequire("ts-node").register({ - transpileOnly: true, - skipProject: true, - compilerOptions: { target: "ES2016" } - }); - tsNodeRegistered = true; - } - try { - transforms.push(dynrequire(dynrequire.resolve(filename, { - paths: [baseDir, process.cwd()] - }))); - } catch (e) { - return callback(e); - } - } - } - - // Fix up the prototype of the transforms’ constructors and instantiate them. - try { - transforms = transforms.map(classOrModule => { - // Except if it’s a legacy module, just pass it through. - if (typeof classOrModule !== "function") { - return classOrModule; - } - Object.assign(classOrModule.prototype, { - program, - baseDir, - stdout, - stderr, - log: console.error, - readFile, - writeFile, - listFiles - }); - return new classOrModule(); - }); - } catch (e) { - return callback(e); - } - - function applyTransform(name, ...args) { - for (let i = 0, k = transforms.length; i < k; ++i) { - let transform = transforms[i]; - if (typeof transform[name] === "function") { - try { - stats.transformCount++; - stats.transfromTime += measure(() => { - transform[name](...args); - }); - } catch (e) { - return e; - } - } - } - } - - // Parse library files - Object.keys(exports.libraryFiles).forEach(libPath => { - if (libPath.includes("/")) return; // in sub-directory: imported on demand - stats.parseCount++; - stats.parseTime += measure(() => { - let textPtr = __pin(__newString(exports.libraryFiles[libPath])); - let pathPtr = __newString(exports.libraryPrefix + libPath + extension.ext); - assemblyscript.parse(program, textPtr, pathPtr, false); - __unpin(textPtr); - }); - }); - let customLibDirs = []; - if (opts.lib) { - let lib = opts.lib; - if (typeof lib === "string") lib = lib.split(","); - customLibDirs.push(...lib.map(p => p.trim())); - customLibDirs = unique(customLibDirs); // `lib` and `customLibDirs` may include duplicates - for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom - let libDir = customLibDirs[i]; - let libFiles; - if (libDir.endsWith(extension.ext)) { - libFiles = [ path.basename(libDir) ]; - libDir = path.dirname(libDir); - } else { - libFiles = listFiles(libDir, baseDir) || []; - } - for (let j = 0, l = libFiles.length; j < l; ++j) { - let libPath = libFiles[j]; - let libText = readFile(libPath, libDir); - if (libText == null) { - return callback(Error(`Library file '${libPath}' not found.`)); - } - stats.parseCount++; - exports.libraryFiles[libPath.replace(extension.re, "")] = libText; - stats.parseTime += measure(() => { - let textPtr = __pin(__newString(libText)); - let pathPtr = __newString(exports.libraryPrefix + libPath); - assemblyscript.parse(program, textPtr, pathPtr, false); - __unpin(textPtr); - }); - } - } - } - opts.path = opts.path || []; - - // Maps package names to parent directory - const packageMains = new Map(); - const packageBases = new Map(); - - // Gets the file matching the specified source path, imported at the given dependee path - function getFile(internalPath, dependeePath) { - var sourceText = null; // text reported back to the compiler - var sourcePath = null; // path reported back to the compiler - - const libraryPrefix = exports.libraryPrefix; - const libraryFiles = exports.libraryFiles; - - // Try file.ext, file/index.ext, file.d.ext - if (!internalPath.startsWith(libraryPrefix)) { - if ((sourceText = readFile(sourcePath = internalPath + extension.ext, baseDir)) == null) { - if ((sourceText = readFile(sourcePath = internalPath + "/index" + extension.ext, baseDir)) == null) { - // portable d.ext: uses the .js file next to it in JS or becomes an import in Wasm - sourcePath = internalPath + extension.ext; - sourceText = readFile(internalPath + extension.ext_d, baseDir); - } - } - - // Search library in this order: stdlib, custom lib dirs, paths - } else { - const plainName = internalPath.substring(libraryPrefix.length); - const indexName = `${plainName}/index`; - if (Object.prototype.hasOwnProperty.call(libraryFiles, plainName)) { - sourceText = libraryFiles[plainName]; - sourcePath = libraryPrefix + plainName + extension.ext; - } else if (Object.prototype.hasOwnProperty.call(libraryFiles, indexName)) { - sourceText = libraryFiles[indexName]; - sourcePath = libraryPrefix + indexName + extension.ext; - } else { // custom lib dirs - for (const libDir of customLibDirs) { - if ((sourceText = readFile(plainName + extension.ext, libDir)) != null) { - sourcePath = libraryPrefix + plainName + extension.ext; - break; - } else { - if ((sourceText = readFile(indexName + extension.ext, libDir)) != null) { - sourcePath = libraryPrefix + indexName + extension.ext; - break; - } - } - } - if (sourceText == null) { // paths - const match = internalPath.match(/^~lib\/((?:@[^/]+\/)?[^/]+)(?:\/(.+))?/); // ~lib/(pkg)/(path), ~lib/(@org/pkg)/(path) - if (match) { - const packageName = match[1]; - const isPackageRoot = match[2] === undefined; - const filePath = isPackageRoot ? "index" : match[2]; - const basePath = packageBases.has(dependeePath) - ? packageBases.get(dependeePath) - : "."; - - if (opts.traceResolution) { - stderr.write(`Looking for package '${packageName}' file '${filePath}' relative to '${basePath}'${EOL}`); - } - const paths = []; - const parts = path.resolve(baseDir, basePath).split(SEP); - for (let i = parts.length, k = WIN ? 1 : 0; i >= k; --i) { - if (parts[i - 1] !== "node_modules") { - paths.push(`${parts.slice(0, i).join(SEP)}${SEP}node_modules`); - } - } - for (const currentPath of paths.concat(...opts.path).map(p => path.relative(baseDir, p))) { - if (opts.traceResolution) { - stderr.write(` in ${path.join(currentPath, packageName)}${EOL}`); - } - let mainPath = "assembly"; - if (packageMains.has(packageName)) { // use cached - mainPath = packageMains.get(packageName); - } else { // evaluate package.json - let jsonPath = path.join(currentPath, packageName, "package.json"); - let jsonText = readFile(jsonPath, baseDir); - if (jsonText != null) { - try { - let json = JSON.parse(jsonText); - if (typeof json.ascMain === "string") { - mainPath = json.ascMain.replace(extension.re_index, ""); - packageMains.set(packageName, mainPath); - } - } catch (e) { /* nop */ } - } - } - const mainDir = path.join(currentPath, packageName, mainPath); - const plainName = filePath; - if ((sourceText = readFile(path.join(mainDir, plainName + extension.ext), baseDir)) != null) { - sourcePath = `${libraryPrefix}${packageName}/${plainName}${extension.ext}`; - packageBases.set(sourcePath.replace(extension.re, ""), path.join(currentPath, packageName)); - if (opts.traceResolution) { - stderr.write(` -> ${path.join(mainDir, plainName + extension.ext)}${EOL}`); - } - break; - } else if (!isPackageRoot) { - const indexName = `${filePath}/index`; - if ((sourceText = readFile(path.join(mainDir, indexName + extension.ext), baseDir)) !== null) { - sourcePath = `${libraryPrefix}${packageName}/${indexName}${extension.ext}`; - packageBases.set(sourcePath.replace(extension.re, ""), path.join(currentPath, packageName)); - if (opts.traceResolution) { - stderr.write(` -> ${path.join(mainDir, indexName + extension.ext)}${EOL}`); - } - break; - } - } - } - } - } - } - } - // No such file - if (sourceText == null) return null; - return { sourceText, sourcePath }; - } - - // Parses the backlog of imported files after including entry files - function parseBacklog() { - var internalPath; - while ((internalPath = __getString(assemblyscript.nextFile(program)))) { - let file = getFile(internalPath, assemblyscript.getDependee(program, internalPath)); - if (file) { - stats.parseCount++; - stats.parseTime += measure(() => { - let textPtr = __pin(__newString(file.sourceText)); - let pathPtr = __newString(file.sourcePath); - assemblyscript.parse(program, textPtr, pathPtr, false); - __unpin(textPtr); - }); - } else { - stats.parseTime += measure(() => { - let textPtr = __newString(null); // no need to pin - let pathPtr = __newString(internalPath + extension.ext); - assemblyscript.parse(program, textPtr, pathPtr, false); - }); - } - } - var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic); - if (numErrors) { - const err = Error(`${numErrors} parse error(s)`); - err.stack = err.message; // omit stack - return callback(err); - } - } - - // Include runtime before entry files so its setup runs first - { - let runtimeName = String(opts.runtime); - let runtimePath = `rt/index-${runtimeName}`; - let runtimeText = exports.libraryFiles[runtimePath]; - if (runtimeText == null) { - runtimePath = runtimeName; - runtimeText = readFile(runtimePath + extension.ext, baseDir); - if (runtimeText == null) return callback(Error(`Runtime '${runtimeName}' not found.`)); - } else { - runtimePath = `~lib/${runtimePath}`; - } - stats.parseCount++; - stats.parseTime += measure(() => { - let textPtr = __pin(__newString(runtimeText)); - let pathPtr = __newString(runtimePath + extension.ext); - assemblyscript.parse(program, textPtr, pathPtr, true); - __unpin(textPtr); - }); - } - - // Include entry files - for (let i = 0, k = argv.length; i < k; ++i) { - const filename = argv[i]; - let sourcePath = String(filename) - .replace(/\\/g, "/") - .replace(extension.re, "") - .replace(/[\\/]$/, ""); - - // Setting the path to relative path - sourcePath = path.isAbsolute(sourcePath) - ? path.relative(baseDir, sourcePath).replace(/\\/g, "/") - : sourcePath; - - // Try entryPath.ext, then entryPath/index.ext - let sourceText = readFile(sourcePath + extension.ext, baseDir); - if (sourceText == null) { - const path = `${sourcePath}/index${extension.ext}`; - sourceText = readFile(path, baseDir); - if (sourceText != null) sourcePath = path; - else sourcePath += extension.ext; - } else { - sourcePath += extension.ext; - } - - stats.parseCount++; - stats.parseTime += measure(() => { - let textPtr = __pin(__newString(sourceText)); - let pathPtr = __newString(sourcePath); - assemblyscript.parse(program, textPtr, pathPtr, true); - __unpin(textPtr); - }); - } - - // Parse entry files - { - let code = parseBacklog(); - if (code) return code; - } - - // Call afterParse transform hook - { - let error = applyTransform("afterParse", program.parser); - if (error) return callback(error); - } - - // Parse additional files, if any - { - let code = parseBacklog(); - if (code) return code; - } - - // Print files and exit if listFiles - if (opts.listFiles) { - // FIXME: not a proper C-like API - stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL); - return callback(null); - } - - // Pre-emptively initialize the program - stats.initializeCount++; - stats.initializeTime += measure(() => { - try { - assemblyscript.initializeProgram(program); - } catch (e) { - crash("initialize", e); - } - }); - - // Call afterInitialize transform hook - { - let error = applyTransform("afterInitialize", program); - if (error) return callback(error); - } - - var module; - stats.compileCount++; - stats.compileTime += measure(() => { - try { - module = assemblyscript.compile(program); - } catch (e) { - crash("compile", e); - } - // From here on we are going to use Binaryen.js, except that we keep pass - // order as defined in the compiler. - if (typeof module === "number") { // Wasm - const original = assemblyscript.Module.wrap(module); - module = binaryen.wrapModule(original.ref); - module.optimize = function(...args) { - original.optimize(...args); - }; - } else { // JS - const original = module; - module = binaryen.wrapModule(module.ref); - module.optimize = function(...args) { - original.optimize(...args); - }; - } - }); - var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic); - if (numErrors) { - if (module) module.dispose(); - const err = Error(`${numErrors} compile error(s)`); - err.stack = err.message; // omit stack - return callback(err); - } - - // Call afterCompile transform hook - { - let error = applyTransform("afterCompile", module); - if (error) return callback(error); - } - - numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic); - if (numErrors) { - if (module) module.dispose(); - const err = Error(`${numErrors} afterCompile error(s)`); - err.stack = err.message; // omit stack - return callback(err); - } - - // Validate the module if requested - if (!opts.noValidate) { - stats.validateCount++; - let isValid; - stats.validateTime += measure(() => { - isValid = module.validate(); - }); - if (!isValid) { - module.dispose(); - return callback(Error("validate error")); - } - } - - // Set Binaryen-specific options - if (opts.trapMode === "clamp" || opts.trapMode === "js") { - stats.optimizeCount++; - stats.optimizeTime += measure(() => { - try { - module.runPasses([`trap-mode-${opts.trapMode}`]); - } catch (e) { - crash("runPasses", e); - } - }); - } else if (opts.trapMode !== "allow") { - module.dispose(); - return callback(Error("Unsupported trap mode")); - } - - // Optimize the module - const debugInfo = opts.debug; - const converge = opts.converge; - const zeroFilledMemory = opts.importMemory - ? opts.zeroFilledMemory - : false; - - const runPasses = []; - if (opts.runPasses) { - if (typeof opts.runPasses === "string") { - opts.runPasses = opts.runPasses.split(","); - } - if (opts.runPasses.length) { - opts.runPasses.forEach(pass => { - if (!runPasses.includes(pass = pass.trim())) { - runPasses.push(pass); - } - }); - } - } - - stats.optimizeTime += measure(() => { - stats.optimizeCount++; - try { - module.optimize(optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); - } catch (e) { - crash("optimize", e); - } - try { - module.runPasses(runPasses); - } catch (e) { - crash("runPasses", e); - } - if (converge) { - let last; - try { - last = module.emitBinary(); - } catch (e) { - crash("emitBinary (converge)", e); - } - do { - stats.optimizeCount++; - try { - module.optimize(optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); - } catch (e) { - crash("optimize (converge)", e); - } - try { - module.runPasses(runPasses); - } catch (e) { - crash("runPasses (converge)", e); - } - let next; - try { - next = module.emitBinary(); - } catch (e) { - crash("emitBinary (converge)", e); - } - if (next.length >= last.length) { - if (next.length > last.length) { - stderr.write(`Last converge was suboptimial.${EOL}`); - } - break; - } - last = next; - } while (true); - } - }); - - // Prepare output - if (!opts.noEmit) { - if (opts.outFile != null) { - if (opts.textFile == null && /\.was?t$/.test(opts.outFile)) { - opts.textFile = opts.outFile; - } else if (opts.jsFile == null && /\.js$/.test(opts.outFile)) { - opts.jsFile = opts.outFile; - } else if (opts.binaryFile == null) { - opts.binaryFile = opts.outFile; - } - } - - let hasStdout = false; - let hasOutput = opts.textFile != null - || opts.binaryFile != null - || opts.jsFile != null - || opts.tsdFile != null - || opts.idlFile != null; - - // Write binary - if (opts.binaryFile != null) { - let basename = path.basename(opts.binaryFile); - let sourceMapURL = opts.sourceMap != null - ? opts.sourceMap.length - ? opts.sourceMap - : `./${basename}.map` - : null; - - let wasm; - stats.emitCount++; - stats.emitTime += measure(() => { - try { - wasm = module.emitBinary(sourceMapURL); - } catch (e) { - crash("emitBinary", e); - } - }); - - if (opts.binaryFile.length) { - writeFile(opts.binaryFile, wasm.binary, baseDir); - } else { - writeStdout(wasm.binary); - hasStdout = true; - } - - // Post-process source map - if (wasm.sourceMap != "") { - if (opts.binaryFile.length) { - let map = JSON.parse(wasm.sourceMap); - map.sourceRoot = `./${basename}`; - let contents = []; - map.sources.forEach((name, index) => { - let text = assemblyscript.getSource(program, __newString(name.replace(extension.re, ""))); - if (text == null) return callback(Error(`Source of file '${name}' not found.`)); - contents[index] = text; - }); - map.sourcesContent = contents; - writeFile(path.join( - path.dirname(opts.binaryFile), - path.basename(sourceMapURL) - ).replace(/^\.\//, ""), JSON.stringify(map), baseDir); - } else { - stderr.write(`Skipped source map (stdout already occupied)${EOL}`); - } - } - } - - // Write text (also fallback) - if (opts.textFile != null || !hasOutput) { - let out; - if (opts.textFile != null && opts.textFile.length) { - // use superset text format when extension is `.wast`. - // Otherwise use official stack IR format (wat). - let wastFormat = opts.textFile.endsWith(".wast"); - stats.emitCount++; - stats.emitTime += measure(() => { - try { - out = wastFormat - ? module.emitText() - : module.emitStackIR(true); - } catch (e) { - crash("emitText", e); - } - }); - writeFile(opts.textFile, out, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - out = module.emitStackIR(true); - } catch (e) { - crash("emitText", e); - } - }); - writeStdout(out); - } - } - - // Write WebIDL - if (opts.idlFile != null) { - let idl; - if (opts.idlFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - idl = assemblyscript.buildIDL(program); - } catch (e) { - crash("buildIDL", e); - } - }); - writeFile(opts.idlFile, __getString(idl), baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - idl = assemblyscript.buildIDL(program); - } catch (e) { - crash("buildIDL", e); - } - }); - writeStdout(__getString(idl)); - hasStdout = true; - } - } - - // Write TypeScript definition - if (opts.tsdFile != null) { - let tsd; - if (opts.tsdFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - tsd = assemblyscript.buildTSD(program); - } catch (e) { - crash("buildTSD", e); - } - }); - writeFile(opts.tsdFile, __getString(tsd), baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - tsd = assemblyscript.buildTSD(program); - } catch (e) { - crash("buildTSD", e); - } - }); - writeStdout(__getString(tsd)); - hasStdout = true; - } - } - - // Write JS (modifies the binary, so must be last) - if (opts.jsFile != null) { - let js; - if (opts.jsFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - js = module.emitAsmjs(); - } catch (e) { - crash("emitJS", e); - } - }); - writeFile(opts.jsFile, js, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - try { - js = module.emitAsmjs(); - } catch (e) { - crash("emitJS", e); - } - }); - writeStdout(js); - } - } - } - - module.dispose(); - if (opts.measure) { - printStats(stats, stderr); - } - - return callback(null); - - function readFileNode(filename, baseDir) { - let name = path.resolve(baseDir, filename); - try { - let text; - stats.readCount++; - stats.readTime += measure(() => { - text = fs.readFileSync(name, "utf8"); - }); - return text; - } catch (e) { - return null; - } - } - - function writeFileNode(filename, contents, baseDir) { - try { - stats.writeCount++; - stats.writeTime += measure(() => { - const dirPath = path.resolve(baseDir, path.dirname(filename)); - filename = path.basename(filename); - const outputFilePath = path.join(dirPath, filename); - if (!fs.existsSync(dirPath)) mkdirp(dirPath); - fs.writeFileSync(outputFilePath, contents); - }); - return true; - } catch (e) { - return false; - } - } - - function listFilesNode(dirname, baseDir) { - var files; - try { - stats.readCount++; - stats.readTime += measure(() => { - files = fs.readdirSync(path.join(baseDir, dirname)) - .filter(file => extension.re_except_d.test(file)); - }); - return files; - } catch (e) { - return null; - } - } - - function writeStdout(contents) { - if (!writeStdout.used) { - stats.writeCount++; - writeStdout.used = true; - } - stats.writeTime += measure(() => { - stdout.write(contents); - }); - } -}; - -const toString = Object.prototype.toString; - -function isObject(arg) { - return toString.call(arg) === "[object Object]"; -} - -function getAsconfig(file, baseDir, readFile) { - const contents = readFile(file, baseDir); - const location = path.join(baseDir, file); - if (!contents) return null; - - // obtain the configuration - let config; - try { - config = JSON.parse(contents); - } catch(ex) { - throw new Error(`Asconfig is not valid json: ${location}`); - } - - // validate asconfig shape - if (config.options && !isObject(config.options)) { - throw new Error(`Asconfig.options is not an object: ${location}`); - } - - if (config.include && !Array.isArray(config.include)) { - throw new Error(`Asconfig.include is not an array: ${location}`); - } - - if (config.targets) { - if (!isObject(config.targets)) { - throw new Error(`Asconfig.targets is not an object: ${location}`); - } - const targets = Object.keys(config.targets); - for (let i = 0; i < targets.length; i++) { - const target = targets[i]; - if (!isObject(config.targets[target])) { - throw new Error(`Asconfig.targets.${target} is not an object: ${location}`); - } - } - } - - if (config.extends && typeof config.extends !== "string") { - throw new Error(`Asconfig.extends is not a string: ${location}`); - } - - return config; -} - -exports.getAsconfig = getAsconfig; - -/** Checks diagnostics emitted so far for errors. */ -function checkDiagnostics(program, stderr, reportDiagnostic) { - var numErrors = 0; - do { - let diagnosticPtr = assemblyscript.nextDiagnostic(program); - if (!diagnosticPtr) break; - __pin(diagnosticPtr); - if (stderr) { - stderr.write( - __getString(assemblyscript.formatDiagnostic(diagnosticPtr, stderr.isTTY, true)) + - EOL + EOL - ); - } - if (reportDiagnostic) { - const diagnostic = __wrap(diagnosticPtr, assemblyscript.DiagnosticMessage); - const range = __wrap(diagnostic.range, assemblyscript.Range); - const relatedRange = __wrap(diagnostic.relatedRange, assemblyscript.Range); - const rangeSource = range ? __wrap(range.source, assemblyscript.Source) : null; - const relatedRangeSource = relatedRange ? __wrap(relatedRange.source, assemblyscript.Source) : null; - - reportDiagnostic({ - message: __getString(diagnostic.message), - code: diagnostic.code, - category: diagnostic.category, - range: range ? { - start: range.start, - end: range.end, - source: rangeSource ? { - normalizedPath: __getString(rangeSource.normalizedPath) - } : null, - } : null, - relatedRange: relatedRange ? { - start: relatedRange.start, - end: relatedRange.end, - source: relatedRangeSource ? { - normalizedPath: __getString(relatedRangeSource.normalizedPath) - } : null - } : null - }); - } - if (assemblyscript.isError(diagnosticPtr)) ++numErrors; - __unpin(diagnosticPtr); - } while (true); - return numErrors; -} - -exports.checkDiagnostics = checkDiagnostics; - -/** Creates an empty set of stats. */ -function createStats() { - return { - readTime: 0, - readCount: 0, - writeTime: 0, - writeCount: 0, - parseTime: 0, - parseCount: 0, - initializeTime: 0, - initializeCount: 0, - compileTime: 0, - compileCount: 0, - emitTime: 0, - emitCount: 0, - validateTime: 0, - validateCount: 0, - optimizeTime: 0, - optimizeCount: 0, - transformTime: 0, - transformCount: 0 - }; -} - -exports.createStats = createStats; - -/** Measures the execution time of the specified function. */ -function measure(fn) { - const start = process.hrtime(); - fn(); - const times = process.hrtime(start); - return times[0] * 1e9 + times[1]; -} - -exports.measure = measure; - -function pad(str, len) { - while (str.length < len) str = ` ${str}`; - return str; -} - -/** Formats a high resolution time to a human readable string. */ -function formatTime(time) { - return time ? `${(time / 1e6).toFixed(3)} ms` : "n/a"; -} - -exports.formatTime = formatTime; - -/** Formats and prints out the contents of a set of stats. */ -function printStats(stats, output) { - const format = (time, count) => `${pad(formatTime(time), 12)} n=${count}`; - (output || process.stdout).write([ - "I/O Read : " + format(stats.readTime, stats.readCount), - "I/O Write : " + format(stats.writeTime, stats.writeCount), - "Parse : " + format(stats.parseTime, stats.parseCount), - "Initialize : " + format(stats.initializeTime, stats.initializeCount), - "Compile : " + format(stats.compileTime, stats.compileCount), - "Emit : " + format(stats.emitTime, stats.emitCount), - "Validate : " + format(stats.validateTime, stats.validateCount), - "Optimize : " + format(stats.optimizeTime, stats.optimizeCount), - "Transform : " + format(stats.transformTime, stats.transformCount), - "" - ].join(EOL) + EOL); -} - -exports.printStats = printStats; - -var allocBuffer = typeof global !== "undefined" && global.Buffer - ? global.Buffer.allocUnsafe || (len => new global.Buffer(len)) - : len => new Uint8Array(len); - -/** Creates a memory stream that can be used in place of stdout/stderr. */ -function createMemoryStream(fn) { - var stream = []; - stream.write = function(chunk) { - if (fn) fn(chunk); - if (typeof chunk === "string") { - let buffer = allocBuffer(utf8.length(chunk)); - utf8.write(chunk, buffer, 0); - chunk = buffer; - } - this.push(chunk); - }; - stream.reset = function() { - stream.length = 0; - }; - stream.toBuffer = function() { - var offset = 0, i = 0, k = this.length; - while (i < k) offset += this[i++].length; - var buffer = allocBuffer(offset); - offset = i = 0; - while (i < k) { - buffer.set(this[i], offset); - offset += this[i].length; - ++i; - } - return buffer; - }; - stream.toString = function() { - var buffer = this.toBuffer(); - return utf8.read(buffer, 0, buffer.length); - }; - return stream; -} - -exports.createMemoryStream = createMemoryStream; - -/** Compatible TypeScript compiler options for syntax highlighting etc. */ -exports.tscOptions = { - alwaysStrict: true, - noImplicitAny: true, - noImplicitReturns: true, - noImplicitThis: true, - noEmitOnError: true, - strictNullChecks: true, - experimentalDecorators: true, - target: "esnext", - module: "commonjs", - noLib: true, - types: [], - allowJs: false -}; - -// Gracefully handle crashes -function crash(stage, e) { - const BAR = colorsUtil.red("▌ "); - console.error([ - EOL, - BAR, "Whoops, the AssemblyScript compiler has crashed during ", stage, " :-(", EOL, - BAR, EOL, - (typeof e.stack === "string" - ? [ - BAR, "Here is the stack trace hinting at the problem, perhaps it's useful?", EOL, - BAR, EOL, - e.stack.replace(/^/mg, BAR), EOL, - BAR, EOL, - BAR, "If it refers to the dist files, try to 'npm install source-map-support' and", EOL, - BAR, "run again, which should then show the actual code location in the sources.", EOL, - ] - : [ - BAR, "There is no stack trace. Perhaps a Binaryen exception above / in console?", EOL, - BAR, EOL, - BAR, "> " + e.stack, EOL - ] - ).join(""), - BAR, EOL, - BAR, "If you see where the error is, feel free to send us a pull request. If not,", EOL, - BAR, "please let us know: https://github.com/AssemblyScript/assemblyscript/issues", EOL, - BAR, EOL, - BAR, "Thank you!", EOL - ].join("")); - process.exit(1); -} diff --git a/cli/asc.d.ts b/cli/index.d.ts similarity index 63% rename from cli/asc.d.ts rename to cli/index.d.ts index 3887d60105..c2666db31f 100644 --- a/cli/asc.d.ts +++ b/cli/index.d.ts @@ -3,18 +3,8 @@ * @license Apache-2.0 */ -import { OptionDescription } from "./util/options"; +import { OptionDescription } from "../util/options"; export { OptionDescription }; -import { Transform } from "./transform"; - -/** Ready promise resolved once/if the compiler is ready. */ -export const ready: Promise; - -/** Whether this is a webpack bundle or not. */ -export const isBundle: boolean; - -/** Whether asc runs the sources directly or not. */ -export const isDev: boolean; /** AssemblyScript version. */ export const version: string; @@ -22,17 +12,8 @@ export const version: string; /** Available CLI options. */ export const options: { [key: string]: OptionDescription }; -/** Common root used in source maps. */ -export var sourceMapRoot: string; - /** Prefix used for library files. */ -export var libraryPrefix: string; - -/** Default Binaryen optimization level. */ -export var defaultOptimizeLevel: number; - -/** Default Binaryen shrink level. */ -export var defaultShrinkLevel: number; +export const libraryPrefix: string; /** Bundled library files. */ export const libraryFiles: { [key: string]: string }; @@ -40,9 +21,15 @@ export const libraryFiles: { [key: string]: string }; /** Bundled definition files. */ export const definitionFiles: { assembly: string, portable: string }; +/** Default Binaryen optimization level. */ +export const defaultOptimizeLevel: number; + +/** Default Binaryen shrink level. */ +export const defaultShrinkLevel: number; + /** A compatible output stream. */ export interface OutputStream { - /** Writes another chunk of data to the stream. */ + /** Writes a chunk of data to the stream. */ write(chunk: Uint8Array | string): void; } @@ -105,18 +92,12 @@ export interface CompilerOptions { converge?: boolean; /** Specifies the base directory of input and output files. */ baseDir?: string; - /** Specifies the output file. File extension indicates format. */ + /** Specifies the WebAssembly output file (.wasm). */ outFile?: string; - /** Specifies the binary output file (.wasm). */ - binaryFile?: string; - /** Specifies the text output file (.wat). */ + /** Specifies the WebAssembly text output file (.wat). */ textFile?: string; - /** Specifies the JavaScript (via wasm2js) output file (.js). */ - jsFile?: string; - /** Specifies the WebIDL output file (.webidl). */ - idlFile?: string; - /** Specifies the TypeScript definition output file (.d.ts). */ - tsdFile?: string; + /** Specified the bindings to generate. */ + bindings?: string[]; /** Enables source map generation. Optionally takes the URL. */ sourceMap?: boolean | string; /** Specifies the runtime variant to include in the program. */ @@ -147,8 +128,8 @@ export interface CompilerOptions { importTable?: boolean; /** Exports the function table as 'table'. */ exportTable?: boolean; - /** Exports an explicit start function to be called manually. */ - explicitStart?: boolean; + /** Exports the start function instead of calling it implicitly. */ + exportStart?: string; /** "Adds one or multiple paths to custom library components. */ lib?: string | string[]; /** Adds one or multiple paths to package resolution. */ @@ -169,16 +150,10 @@ export interface CompilerOptions { transform?: string | string[]; /** Make yourself sad for no good reason. */ pedantic?: boolean; - /** Enables tracing of package resolution. */ - traceResolution?: boolean; - /** Lists files to be compiled and exits. */ - listFiles?: boolean; /** Prints measuring information on I/O and compile times. */ - measure?: boolean; + stats?: boolean; /** Disables terminal colors. */ noColors?: boolean; - /** Specifies an alternative file extension. */ - extension?: string; } /** Compiler API options. */ @@ -188,68 +163,118 @@ export interface APIOptions { /** Standard error stream to use. */ stderr?: OutputStream; /** Reads a file from disk (or memory). */ - readFile?: (filename: string, baseDir: string) => string | null; + readFile?: (filename: string, baseDir: string) => (string | null) | Promise; /** Writes a file to disk (or memory). */ - writeFile?: (filename: string, contents: Uint8Array, baseDir: string) => void; + writeFile?: (filename: string, contents: Uint8Array, baseDir: string) => void | Promise; /** Lists all files within a directory. */ - listFiles?: (dirname: string, baseDir: string) => string[] | null; + listFiles?: (dirname: string, baseDir: string) => (string[] | null) | Promise; /** Handler for diagnostic messages. */ reportDiagnostic?: DiagnosticReporter; /** Additional transforms to apply. */ transforms?: Transform[]; } +/** Compiler API result. */ +export interface APIResult { + /** Encountered error, if any. */ + error: Error | null; + /** Standard output stream. */ + stdout: OutputStream; + /** Standard error stream. */ + stderr: OutputStream; + /** Statistics. */ + stats: Stats; +} + +/** Runs the command line utility using the specified arguments array. */ +export function main(argv: string[] | CompilerOptions, options?: APIOptions): Promise; + /** Convenience function that parses and compiles source strings directly. */ -export function compileString(sources: { [key: string]: string } | string, options?: CompilerOptions): { - /** Standard output. */ - stdout: OutputStream, - /** Standard error. */ - stderr: OutputStream, +export function compileString(sources: { [key: string]: string } | string, options?: CompilerOptions): Promise number): number; -export function main(argv: string[], callback?: (err: Error | null) => number): number; +}>; /** Checks diagnostics emitted so far for errors. */ -export function checkDiagnostics(emitter: Record, stderr?: OutputStream, reportDiagnostic?: DiagnosticReporter): boolean; - -/** An object of stats for the current task. */ -export interface Stats { - readTime: number, - readCount: number, - writeTime: number, - writeCount: number, - parseTime: number, - parseCount: number, - compileTime: number, - compileCount: number, - emitTime: number, - emitCount: number, - validateTime: number, - validateCount: number, - optimizeTime: number, - optimizeCount: number -} +export function checkDiagnostics(emitter: Record, stderr?: OutputStream, reportDiagnostic?: DiagnosticReporter, useColors?: boolean): boolean; -/** Creates an empty set of stats. */ -export function createStats(): Stats; - -/** Measures the execution time of the specified function. */ -export function measure(fn: () => void): number; - -/** Formats a high resolution time to a human readable string. */ -export function formatTime(time: number): string; - -/** Formats and prints out the contents of a set of stats. */ -export function printStats(stats: Stats, output: OutputStream): void; +/** Statistics for the current task. */ +export class Stats { + /** Number of files read. */ + readCount: number; + /** Number of files written. */ + writeCount: number; + /** Time taken to parse files. */ + parseTime: number; + /** Number of files parsed. */ + parseCount: number; + /** Time taken to compile programs. */ + compileTime: number; + /** Number of programs compiled. */ + compileCount: number; + /** Time taken to emit files. */ + emitTime: number; + /** Number of emitted files. */ + emitCount: number; + /** Time taken to validate modules. */ + validateTime: number; + /** Number of modules validated. */ + validateCount: number; + /** Time taken to optimize modules. */ + optimizeTime: number; + /** Number of modules optimized. */ + optimizeCount: number; + /** Begins measuring execution time. */ + begin(): number; + /** Ends measuring execution time since `begin`. */ + end(begin: number): number; + /** Returns a string representation. */ + toString(): string; +} /** Creates a memory stream that can be used in place of stdout/stderr. */ export function createMemoryStream(fn?: (chunk: Uint8Array | string) => void): MemoryStream; /** Compatible TypeScript compiler options for syntax highlighting etc. */ export const tscOptions: Record; + +import { Program, Parser, Module } from "../src"; + +/** Compiler transform base class. */ +export abstract class Transform { + + /** Program reference. */ + readonly program: Program; + + /** Base directory. */ + readonly baseDir: string; + + /** Output stream used by the compiler. */ + readonly stdout: OutputStream; + + /** Error stream used by the compiler. */ + readonly stderr: OutputStream; + + /** Logs a message to console. */ + readonly log: typeof console.log; + + /** Reads a file from disk. */ + readFile(filename: string, baseDir: string): (string | null) | Promise; + + /** Writes a file to disk. */ + writeFile(filename: string, contents: string | Uint8Array, baseDir: string): void | Promise; + + /** Lists all files in a directory. */ + listFiles(dirname: string, baseDir: string): (string[] | null) | Promise; + + /** Called when parsing is complete, before a program is instantiated from the AST. */ + afterParse?(parser: Parser): void | Promise; + + /** Called after the program is instantiated. */ + afterInitialize?(program: Program): void | Promise; + + /** Called when compilation is complete, before the module is being validated. */ + afterCompile?(module: Module): void | Promise; +} diff --git a/cli/index.js b/cli/index.js new file mode 100644 index 0000000000..53d85a9a7a --- /dev/null +++ b/cli/index.js @@ -0,0 +1,1263 @@ +/** + * @license + * Copyright 2020 Daniel Wirtz / The AssemblyScript Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Compiler frontend for node.js + * + * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to + * JavaScript as well as the compiler compiled to WebAssembly (eventually). + * + * Can also be packaged as a bundle suitable for in-browser use with the standard library injected + * in the build step. See dist/asc.js for the bundle. + */ + +import { fs, module, path, process, url } from "../util/node.js"; +import { Colors } from "../util/terminal.js"; +import { utf8 } from "../util/text.js"; +import * as optionsUtil from "../util/options.js"; +import * as generated from "./index.generated.js"; + +import binaryen from "../lib/binaryen.js"; +import * as assemblyscriptJS from "assemblyscript"; + +// Use the TS->JS variant by default +var assemblyscript = assemblyscriptJS; + +// Use the AS->Wasm variant as an option (experimental) +const wasmPos = process.argv.indexOf("--wasm"); +if (~wasmPos) { + const wasmPath = String(process.argv[wasmPos + 1]); + process.argv.splice(wasmPos, 2); + assemblyscript = await import(new URL(wasmPath, url.pathToFileURL(process.cwd() + "/"))); +} + +const require = module.createRequire(import.meta.url); + +const WIN = process.platform === "win32"; +const EOL = WIN ? "\r\n" : "\n"; +const SEP = WIN ? "\\" : "/"; + +const extension = ".ts"; +const extension_d = `.d${extension}`; +const extension_re = new RegExp("\\" + extension + "$"); +const extension_re_except_d = new RegExp("^(?!.*\\.d\\" + extension + "$).*\\" + extension + "$"); + +function toUpperSnakeCase(str) { + return str.replace(/-/g, "_").toUpperCase(); +} + +/** Ensures that an object is a wrapper class instead of just a pointer. */ +// function __wrap(ptrOrObj, wrapperClass) { +// if (typeof ptrOrObj === "number") { +// return ptrOrObj === 0 ? null : wrapperClass.wrap(ptrOrObj); +// } +// return ptrOrObj; +// } + +/** AssemblyScript version. */ +export const version = generated.version; + +/** Available CLI options. */ +export const options = generated.options; + +/** Prefix used for library files. */ +export const libraryPrefix = generated.libraryPrefix; + +/** Bundled library files. */ +export const libraryFiles = generated.libraryFiles; + +/** Bundled definition files. */ +export const definitionFiles = generated.definitionFiles; + +/** Default Binaryen optimization level. */ +export const defaultOptimizeLevel = 3; + +/** Default Binaryen shrink level. */ +export const defaultShrinkLevel = 0; + +/** Converts a configuration object to an arguments array. */ +export function configToArguments(options, argv = []) { + Object.keys(options || {}).forEach(key => { + const val = options[key]; + const opt = generated.options[key]; + if (opt && opt.type === "b") { + if (val) argv.push(`--${key}`); + } else { + if (Array.isArray(val)) { + val.forEach(val => { argv.push(`--${key}`, String(val)); }); + } + else argv.push(`--${key}`, String(val)); + } + }); + return argv; +} + +/** Convenience function that parses and compiles source strings directly. */ +export async function compileString(sources, config = {}) { + if (typeof sources === "string") sources = { [`input${extension}`]: sources }; + var argv = [ + "--outFile", "binary", + "--textFile", "text", + ]; + configToArguments(config, argv); + const output = {}; + const result = await main(argv.concat(Object.keys(sources)), { + readFile: name => Object.prototype.hasOwnProperty.call(sources, name) ? sources[name] : null, + writeFile: (name, contents) => { output[name] = contents; }, + listFiles: () => [] + }); + return Object.assign(result, output); +} + +/** Runs the command line utility using the specified arguments array. */ +export async function main(argv, options) { + if (!Array.isArray(argv)) argv = configToArguments(argv); + if (!options) options = {}; + + const stats = options.stats || new Stats(); + const statsBegin = stats.begin(); + + // Bundle semantic version + let bundleMinorVersion = 0, bundleMajorVersion = 0, bundlePatchVersion = 0; + const versionParts = (version || "").split("."); + if (versionParts.length === 3) { + bundleMajorVersion = parseInt(versionParts[0]) | 0; + bundleMinorVersion = parseInt(versionParts[1]) | 0; + bundlePatchVersion = parseInt(versionParts[2]) | 0; + } + + const stdout = options.stdout || createMemoryStream(); + const stderr = options.stderr || createMemoryStream(); + const readFile = options.readFile || readFileNode; + const writeFile = options.writeFile || writeFileNode; + const listFiles = options.listFiles || listFilesNode; + + // Parse command line options but do not populate option defaults yet + const optionsResult = optionsUtil.parse(argv, generated.options, false); + let opts = optionsResult.options; + argv = optionsResult.arguments; + + const stdoutColors = new Colors(stdout); + const stderrColors = new Colors(stderr); + if (opts.noColors) { + stdoutColors.enabled = false; + stderrColors.enabled = false; + } + + // Check for unknown options + const unknownOpts = optionsResult.unknown; + if (unknownOpts.length) { + unknownOpts.forEach(arg => { + stderr.write( + `${stderrColors.yellow("WARNING ")}Unknown option '${arg}'${EOL}` + ); + }); + } + + // Check for trailing arguments + const trailingArgv = optionsResult.trailing; + if (trailingArgv.length) { + stderr.write( + `${stderrColors.yellow("WARNING ")}Unsupported trailing arguments: ${trailingArgv.join(" ")}${EOL}` + ); + } + + var module = null; + var binaryenModule = null; + + // Prepares the result object + var prepareResult = (error, result = {}) => { + if (error) { + stderr.write(`${stderrColors.red("FAILURE ")}${error.stack.replace(/^ERROR: /i, "")}${EOL}`); + } + if (binaryenModule) binaryenModule.dispose(); + if (!stats.total) stats.total = stats.end(statsBegin); + return Object.assign({ error, stdout, stderr, stats }, result); + }; + + // Just print the version if requested + if (opts.version) { + stdout.write(`Version ${version}${EOL}`); + return prepareResult(null); + } + + // Set up base directory + const baseDir = path.normalize(opts.baseDir || "."); + + // Check if a config file is present + let configPath = optionsUtil.resolvePath(opts.config || "asconfig.json", baseDir); + let configFile = path.basename(configPath); + let configDir = path.dirname(configPath); + let config = await getConfig(configFile, configDir, readFile); + let configHasEntries = config != null && Array.isArray(config.entries) && config.entries.length; + + // Print the help message if requested or no source files are provided + if (opts.help || (!argv.length && !configHasEntries)) { + var out = opts.help ? stdout : stderr; + var colors = opts.help ? stdoutColors : stderrColors; + out.write([ + colors.white("SYNTAX"), + " " + colors.cyan("asc") + " [entryFile ...] [options]", + "", + colors.white("EXAMPLES"), + " " + colors.cyan("asc") + " hello" + extension, + " " + colors.cyan("asc") + " hello" + extension + " -o hello.wasm -t hello.wat", + " " + colors.cyan("asc") + " hello1" + extension + " hello2" + extension + " -o -O > hello.wasm", + " " + colors.cyan("asc") + " --config asconfig.json --target release", + "", + colors.white("OPTIONS"), + ].concat( + optionsUtil.help(generated.options, 24, EOL) + ).join(EOL) + EOL); + return prepareResult(null); + } + + // I/O must be specified if not present in the environment + if (!(fs.promises && fs.promises.readFile)) { + if (readFile === readFileNode) throw Error("'options.readFile' must be specified"); + if (writeFile === writeFileNode) throw Error("'options.writeFile' must be specified"); + if (listFiles === listFilesNode) throw Error("'options.listFiles' must be specified"); + } + + // Load additional options from asconfig.json + const seenAsconfig = new Set(); + seenAsconfig.add(configPath); + const target = opts.target || "release"; + while (config) { + // Merge target first + if (config.targets) { + const targetOptions = config.targets[target]; + if (targetOptions) { + opts = optionsUtil.merge(generated.options, opts, targetOptions, configDir); + } + } + // Merge general options + const generalOptions = config.options; + if (generalOptions) { + opts = optionsUtil.merge(generated.options, opts, generalOptions, configDir); + } + + // Append entries + if (config.entries) { + for (let entry of config.entries) { + argv.push(optionsUtil.resolvePath(entry, configDir)); + } + } + + // Look up extended asconfig and repeat + if (config.extends) { + configPath = optionsUtil.resolvePath(config.extends, configDir, true); + configFile = path.basename(configPath); + configDir = path.dirname(configPath); + if (seenAsconfig.has(configPath)) break; + seenAsconfig.add(configPath); + config = await getConfig(configFile, configDir, readFile); + } else { + break; + } + } + + // Populate option defaults once user-defined options are set + optionsUtil.addDefaults(generated.options, opts); + + // If showConfig print options and exit + if (opts.showConfig) { + stderr.write(JSON.stringify({ + options: opts, + entries: argv + }, null, 2)); + return prepareResult(null); + } + + // create a unique set of values + function unique(values) { + return [...new Set(values)]; + } + + // Set up options + var program, runtime; + const compilerOptions = assemblyscript.newOptions(); + switch (opts.runtime) { + case "stub": runtime = 0; break; + case "minimal": runtime = 1; break; + /* incremental */ + default: runtime = 2; break; + } + assemblyscript.setTarget(compilerOptions, 0); + assemblyscript.setRuntime(compilerOptions, runtime); + assemblyscript.setNoAssert(compilerOptions, opts.noAssert); + assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); + assemblyscript.setImportMemory(compilerOptions, opts.importMemory); + assemblyscript.setInitialMemory(compilerOptions, opts.initialMemory >>> 0); + assemblyscript.setMaximumMemory(compilerOptions, opts.maximumMemory >>> 0); + assemblyscript.setSharedMemory(compilerOptions, opts.sharedMemory); + assemblyscript.setImportTable(compilerOptions, opts.importTable); + assemblyscript.setExportTable(compilerOptions, opts.exportTable); + assemblyscript.setExportStart(compilerOptions, typeof opts.exportStart === "string" ? opts.exportStart : null); + assemblyscript.setMemoryBase(compilerOptions, opts.memoryBase >>> 0); + assemblyscript.setTableBase(compilerOptions, opts.tableBase >>> 0); + assemblyscript.setSourceMap(compilerOptions, opts.sourceMap != null); + assemblyscript.setNoUnsafe(compilerOptions, opts.noUnsafe); + assemblyscript.setPedantic(compilerOptions, opts.pedantic); + assemblyscript.setLowMemoryLimit(compilerOptions, opts.lowMemoryLimit >>> 0); + assemblyscript.setExportRuntime(compilerOptions, opts.exportRuntime); + assemblyscript.setBundleVersion(compilerOptions, bundleMajorVersion, bundleMinorVersion, bundlePatchVersion); + if (!opts.stackSize && opts.runtime == "incremental") { + opts.stackSize = assemblyscript.DEFAULT_STACK_SIZE; + } + assemblyscript.setStackSize(compilerOptions, opts.stackSize); + + // Instrument callback to perform GC + // prepareResult = (original => { + // return function gcBeforePrepareResult(err) { + // __unpin(compilerOptions); + // if (program) __unpin(program); + // __collect(); + // return original(err); + // }; + // })(prepareResult); + + // Add or override aliases if specified + if (opts.use) { + let aliases = opts.use; + for (let i = 0, k = aliases.length; i < k; ++i) { + let part = aliases[i]; + let p = part.indexOf("="); + if (p < 0) return prepareResult(Error(`Global alias '${part}' is invalid.`)); + let alias = part.substring(0, p).trim(); + let name = part.substring(p + 1).trim(); + if (!alias.length) { + return prepareResult(Error(`Global alias '${part}' is invalid.`)); + } + assemblyscript.addGlobalAlias(compilerOptions, alias, name); + } + } + + // Disable default features if specified + var features; + if ((features = opts.disable) != null) { + if (typeof features === "string") features = features.split(","); + for (let i = 0, k = features.length; i < k; ++i) { + let name = features[i].trim(); + let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; + if (!flag) return prepareResult(Error(`Feature '${name}' is unknown.`)); + assemblyscript.disableFeature(compilerOptions, flag); + } + } + + // Enable experimental features if specified + if ((features = opts.enable) != null) { + if (typeof features === "string") features = features.split(","); + for (let i = 0, k = features.length; i < k; ++i) { + let name = features[i].trim(); + let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; + if (!flag) return prepareResult(Error(`Feature '${name}' is unknown.`)); + assemblyscript.enableFeature(compilerOptions, flag); + } + } + + // Set up optimization levels + var optimizeLevel = 0; + var shrinkLevel = 0; + if (opts.optimize) { + optimizeLevel = defaultOptimizeLevel; + shrinkLevel = defaultShrinkLevel; + } + if (typeof opts.optimizeLevel === "number") optimizeLevel = opts.optimizeLevel; + if (typeof opts.shrinkLevel === "number") shrinkLevel = opts.shrinkLevel; + optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3); + shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2); + assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel); + + // Initialize the program + program = assemblyscript.newProgram(compilerOptions); + + // Collect transforms *constructors* from the `--transform` CLI flag as well + // as the `transform` option into the `transforms` array. + let transforms = []; + // `transform` option from `main()` + if (Array.isArray(options.transforms)) { + transforms.push(...options.transforms); + } + // `--transform` CLI flag + if (opts.transform) { + let transformArgs = unique(opts.transform); + for (let i = 0, k = transformArgs.length; i < k; ++i) { + let filename = transformArgs[i].trim(); + let resolved; + let transform; + if (require.resolve) { + try { + resolved = require.resolve(filename, { paths: [process.cwd(), baseDir] }); + transform = await import(url.pathToFileURL(resolved)); + if (transform.default) transform = transform.default; + } catch (e1) { + try { + transform = require(resolved); + } catch (e2) { + return prepareResult(e1); + } + } + } else { + try { + transform = await import(new URL(filename, import.meta.url)); + if (transform.default) transform = transform.default; + } catch (e) { + return prepareResult(e); + } + } + if (!transform || (typeof transform !== "function" && typeof transform !== "object")) { + return prepareResult(Error("not a transform: " + transformArgs[i])); + } + transforms.push(transform); + } + } + + // Fix up the prototype of the transforms’ constructors and instantiate them. + try { + transforms = transforms.map(transform => { + if (typeof transform === "function") { + Object.assign(transform.prototype, { + program, + baseDir, + stdout, + stderr, + log: console.error, + readFile, + writeFile, + listFiles + }); + transform = new transform(); + } + return transform; + }); + } catch (e) { + return prepareResult(e); + } + + async function applyTransform(name, ...args) { + for (let i = 0, k = transforms.length; i < k; ++i) { + let transform = transforms[i]; + if (typeof transform[name] === "function") { + try { + let start = stats.begin(); + stats.transformCount++; + await transform[name](...args); + stats.transformTime += stats.end(start); + } catch (e) { + return e; + } + } + } + } + + // Parse library files + Object.keys(libraryFiles).forEach(libPath => { + if (libPath.includes("/")) return; // in sub-directory: imported on demand + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, libraryFiles[libPath], libraryPrefix + libPath + extension, false); + stats.parseTime += stats.end(begin); + }); + let customLibDirs = []; + if (opts.lib) { + let lib = opts.lib; + if (typeof lib === "string") lib = lib.split(","); + customLibDirs.push(...lib.map(p => p.trim())); + customLibDirs = unique(customLibDirs); // `lib` and `customLibDirs` may include duplicates + for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom + let libDir = customLibDirs[i]; + let libFiles; + if (libDir.endsWith(extension)) { + libFiles = [ path.basename(libDir) ]; + libDir = path.dirname(libDir); + } else { + libFiles = await listFiles(libDir, baseDir) || []; + } + for (let libPath of libFiles) { + let libText = await readFile(libPath, libDir); + if (libText == null) { + return prepareResult(Error(`Library file '${libPath}' not found.`)); + } + libraryFiles[libPath.replace(extension_re, "")] = libText; + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, libText, libraryPrefix + libPath, false); + stats.parseTime += stats.end(begin); + } + } + } + opts.path = opts.path || []; + + // Maps package names to parent directory + const packageBases = new Map(); + + // Gets the file matching the specified source path, imported at the given dependee path + async function getFile(internalPath, dependeePath) { + var sourceText = null; // text reported back to the compiler + var sourcePath = null; // path reported back to the compiler + + // Try file.ext, file/index.ext, file.d.ext + if (!internalPath.startsWith(libraryPrefix)) { + if ((sourceText = await readFile(sourcePath = internalPath + extension, baseDir)) == null) { + if ((sourceText = await readFile(sourcePath = internalPath + "/index" + extension, baseDir)) == null) { + // portable d.ext: uses the .js file next to it in JS or becomes an import in Wasm + sourcePath = internalPath + extension; + sourceText = await readFile(internalPath + extension_d, baseDir); + } + } + + // Search library in this order: stdlib, custom lib dirs, paths + } else { + const plainName = internalPath.substring(libraryPrefix.length); + const indexName = `${plainName}/index`; + if (Object.prototype.hasOwnProperty.call(libraryFiles, plainName)) { + sourceText = libraryFiles[plainName]; + sourcePath = libraryPrefix + plainName + extension; + } else if (Object.prototype.hasOwnProperty.call(libraryFiles, indexName)) { + sourceText = libraryFiles[indexName]; + sourcePath = libraryPrefix + indexName + extension; + } else { // custom lib dirs + for (const libDir of customLibDirs) { + if ((sourceText = await readFile(plainName + extension, libDir)) != null) { + sourcePath = libraryPrefix + plainName + extension; + break; + } else { + if ((sourceText = await readFile(indexName + extension, libDir)) != null) { + sourcePath = libraryPrefix + indexName + extension; + break; + } + } + } + if (sourceText == null) { // paths + const match = internalPath.match(/^~lib\/((?:@[^/]+\/)?[^/]+)(?:\/(.+))?/); // ~lib/(pkg)/(path), ~lib/(@org/pkg)/(path) + if (match) { + const packageName = match[1]; + const filePath = match[2] || "index"; + const basePath = packageBases.has(dependeePath) ? packageBases.get(dependeePath) : "."; + const paths = []; + const parts = path.resolve(baseDir, basePath).split(SEP); + for (let i = parts.length, k = WIN ? 1 : 0; i >= k; --i) { + if (parts[i - 1] !== "node_modules") { + paths.push(`${parts.slice(0, i).join(SEP)}${SEP}node_modules`); + } + } + paths.push(...opts.path); + for (const currentDir of paths.map(p => path.relative(baseDir, p))) { + const plainName = filePath; + if ((sourceText = await readFile(path.join(currentDir, packageName, plainName + extension), baseDir)) != null) { + sourcePath = `${libraryPrefix}${packageName}/${plainName}${extension}`; + packageBases.set(sourcePath.replace(extension_re, ""), path.join(currentDir, packageName)); + break; + } + const indexName = `${filePath}/index`; + if ((sourceText = await readFile(path.join(currentDir, packageName, indexName + extension), baseDir)) != null) { + sourcePath = `${libraryPrefix}${packageName}/${indexName}${extension}`; + packageBases.set(sourcePath.replace(extension_re, ""), path.join(currentDir, packageName)); + break; + } + } + } + } + } + } + // No such file + if (sourceText == null) return null; + return { sourceText, sourcePath }; + } + + // Gets all pending imported files from the the backlog + function getBacklog(paths = []) { + do { + let internalPath = assemblyscript.nextFile(program); + if (internalPath == null) break; + paths.push(internalPath); + } while (true); + return paths; + } + + // Parses the backlog of imported files after including entry files + async function parseBacklog() { + var backlog; + while ((backlog = getBacklog()).length) { + let files = []; + for (let internalPath of backlog) { + const dependee = assemblyscript.getDependee(program, internalPath); + files.push(getFile(internalPath, dependee)); // queue + } + files = await Promise.all(files); // parallel + for (let i = 0, k = backlog.length; i < k; ++i) { + const internalPath = backlog[i]; + const file = files[i]; + const begin = stats.begin(); + stats.parseCount++; + if (file) { + assemblyscript.parse(program, file.sourceText, file.sourcePath, false); + } else { + assemblyscript.parse(program, null, internalPath + extension, false); + } + stats.parseTime += stats.end(begin); + } + } + const numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} parse error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + } + + // Include runtime before entry files so its setup runs first + { + let runtimeName = String(opts.runtime); + let runtimePath = `rt/index-${runtimeName}`; + let runtimeText = libraryFiles[runtimePath]; + if (runtimeText == null) { + runtimePath = runtimeName; + runtimeText = await readFile(runtimePath + extension, baseDir); + if (runtimeText == null) return prepareResult(Error(`Runtime '${runtimeName}' not found.`)); + } else { + runtimePath = `~lib/${runtimePath}`; + } + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, runtimeText, runtimePath + extension, true); + stats.parseTime += stats.end(begin); + } + + // Include entry files + for (let i = 0, k = argv.length; i < k; ++i) { + const filename = argv[i]; + let sourcePath = String(filename) + .replace(/\\/g, "/") + .replace(extension_re, "") + .replace(/[\\/]$/, ""); + + // Setting the path to relative path + sourcePath = path.isAbsolute(sourcePath) + ? path.relative(baseDir, sourcePath).replace(/\\/g, "/") + : sourcePath; + + // Try entryPath.ext, then entryPath/index.ext + let sourceText = await readFile(sourcePath + extension, baseDir); + if (sourceText == null) { + const path = `${sourcePath}/index${extension}`; + sourceText = await readFile(path, baseDir); + if (sourceText != null) sourcePath = path; + else sourcePath += extension; + } else { + sourcePath += extension; + } + + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, sourceText, sourcePath, true); + stats.parseTime += stats.end(begin); + } + + // Parse entry files + { + let code = await parseBacklog(); + if (code) return code; + } + + // Call afterParse transform hook + { + let error = await applyTransform("afterParse", program.parser); + if (error) return prepareResult(error); + } + + // Parse additional files, if any + { + let code = await parseBacklog(); + if (code) return code; + } + + // Pre-emptively initialize the program + { + let begin = stats.begin(); + stats.initializeCount++; + try { + assemblyscript.initializeProgram(program); + } catch (e) { + crash("initialize", e); + } + stats.initializeTime += stats.end(begin); + } + + // Call afterInitialize transform hook + { + let error = await applyTransform("afterInitialize", program); + if (error) return prepareResult(error); + } + + // Compile the program + { + let begin = stats.begin(); + stats.compileCount++; + try { + module = assemblyscript.compile(program); + } catch (e) { + crash("compile", e); + } + stats.compileTime += stats.end(begin); + } + // From here on we are going to use Binaryen.js + binaryenModule = binaryen.wrapModule( + typeof module === "number" || module instanceof Number + ? assemblyscript.getBinaryenModuleRef(module) + : module.ref + ); + var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} compile error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + + // Call afterCompile transform hook + { + let error = await applyTransform("afterCompile", binaryenModule); + if (error) return prepareResult(error); + } + + numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} afterCompile error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + + // Validate the module if requested + if (!opts.noValidate) { + let begin = stats.begin(); + stats.validateCount++; + let isValid = assemblyscript.validate(module); + stats.validateTime += stats.end(begin); + if (!isValid) { + return prepareResult(Error("validate error")); + } + } + + // Set Binaryen-specific options + if (opts.trapMode === "clamp" || opts.trapMode === "js") { + let begin = stats.begin(); + try { + binaryenModule.runPasses([`trap-mode-${opts.trapMode}`]); + } catch (e) { + crash("runPasses", e); + } + stats.compileTime += stats.end(begin); + } else if (opts.trapMode !== "allow") { + return prepareResult(Error("Unsupported trap mode")); + } + + // Optimize the module + const debugInfo = opts.debug; + const converge = opts.converge; + const zeroFilledMemory = opts.importMemory + ? opts.zeroFilledMemory + : false; + + const runPasses = []; + if (opts.runPasses) { + if (typeof opts.runPasses === "string") { + opts.runPasses = opts.runPasses.split(","); + } + if (opts.runPasses.length) { + opts.runPasses.forEach(pass => { + if (!runPasses.includes(pass = pass.trim())) { + runPasses.push(pass); + } + }); + } + } + + { + let begin = stats.begin(); + try { + stats.optimizeCount++; + assemblyscript.optimize(module, optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); + } catch (e) { + crash("optimize", e); + } + try { + binaryenModule.runPasses(runPasses); + } catch (e) { + crash("runPasses", e); + } + if (converge) { + let last; + try { + let begin = stats.begin(); + stats.emitCount++; + last = binaryenModule.emitBinary(); + stats.emitTime += stats.end(begin); + } catch (e) { + crash("emitBinary (converge)", e); + } + do { + try { + stats.optimizeCount++; + assemblyscript.optimize(module, optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); + } catch (e) { + crash("optimize (converge)", e); + } + try { + binaryenModule.runPasses(runPasses); + } catch (e) { + crash("runPasses (converge)", e); + } + let next; + try { + let begin = stats.begin(); + stats.emitCount++; + next = binaryenModule.emitBinary(); + stats.emitTime += stats.end(begin); + } catch (e) { + crash("emitBinary (converge)", e); + } + if (next.length >= last.length) { + if (next.length > last.length) { + stderr.write(`Last converge was suboptimial.${EOL}`); + } + break; + } + last = next; + } while (true); + } + stats.optimizeTime += stats.end(begin); + } + + const pending = []; + + // Prepare output + if (!opts.noEmit) { + let bindings = opts.bindings || []; + let hasStdout = false; + let hasOutFile = opts.outFile != null; + let hasTextFile = opts.textFile != null; + let hasOutput = hasOutFile || hasTextFile; + let hasFileOutput = (hasOutFile && opts.outFile.length > 0) || (hasTextFile && opts.textFile.length > 0); + let basepath = hasFileOutput + ? (opts.outFile || opts.textFile).replace(/\.\w+$/, "") + : null; + let basename = hasFileOutput + ? path.basename(basepath) + : "output"; + + assemblyscript.setBasenameHint(compilerOptions, basename); + + // Write binary + if (opts.outFile != null) { + let sourceMapURL = opts.sourceMap != null + ? opts.sourceMap.length + ? opts.sourceMap + : `./${basename}.wasm.map` + : null; + + let begin = stats.begin(); + stats.emitCount++; + let wasm; + try { + wasm = binaryenModule.emitBinary(sourceMapURL); + } catch (e) { + crash("emitBinary", e); + } + stats.emitTime += stats.end(begin); + + if (opts.outFile.length) { + pending.push( + writeFile(opts.outFile, wasm.binary, baseDir) + ); + } else { + hasStdout = true; + writeStdout(wasm.binary); + } + + // Post-process source map + if (wasm.sourceMap != "") { + if (opts.outFile.length) { + let map = JSON.parse(wasm.sourceMap); + map.sourceRoot = `./${basename}`; + let contents = []; + for (let i = 0, k = map.sources.length; i < k; ++i) { + let name = map.sources[i]; + let text = assemblyscript.getSource(program, name.replace(extension_re, "")); + if (text == null) return prepareResult(Error(`Source of file '${name}' not found.`)); + contents[i] = text; + } + map.sourcesContent = contents; + pending.push( + writeFile(path.join( + path.dirname(opts.outFile), + path.basename(sourceMapURL) + ).replace(/^\.\//, ""), JSON.stringify(map), baseDir) + ); + } else { + stderr.write(`Skipped source map (no output path)${EOL}`); + } + } + } + + // Write text (also fallback) + if (opts.textFile != null || !hasOutput) { + let begin = stats.begin(); + stats.emitCount++; + let out; + try { + // use superset text format when extension is `.wast`. + // Otherwise use official stack IR format (wat). + out = opts.textFile?.endsWith(".wast") + ? binaryenModule.emitText() + : binaryenModule.emitStackIR(true); + } catch (e) { + crash("emitText", e); + } + stats.emitTime += stats.end(begin); + + if (opts.textFile != null && opts.textFile.length) { + pending.push( + writeFile(opts.textFile, out, baseDir) + ); + } else if (!hasStdout) { + hasStdout = true; + writeStdout(out); + } + } + + // Write TypeScript definition + const bindingsEsm = bindings.includes("esm"); + const bindingsRaw = !bindingsEsm && bindings.includes("raw"); + if (bindingsEsm || bindingsRaw) { + if (basepath) { + let begin = stats.begin(); + stats.emitCount++; + let source; + try { + source = assemblyscript.buildTSD(program, bindingsEsm); + } catch (e) { + crash("buildTSD", e); + } + stats.emitTime += stats.end(begin); + pending.push( + writeFile(basepath + ".d.ts", source, baseDir) + ); + } else { + stderr.write(`Skipped TypeScript binding (no output path)${EOL}`); + } + } + + // Write JavaScript bindings + if (bindingsEsm || bindingsRaw) { + if (basepath) { + let begin = stats.begin(); + stats.emitCount++; + let source; + try { + source = assemblyscript.buildJS(program, bindingsEsm); + } catch (e) { + crash("buildJS", e); + } + stats.emitTime += stats.end(begin); + pending.push( + writeFile(basepath + ".js", source, baseDir) + ); + } else { + stderr.write(`Skipped JavaScript binding (no output path)${EOL}`); + } + } + } + + try { + await Promise.all(pending); + } catch (err) { + return prepareResult(err); + } + + stats.total = stats.end(statsBegin); + if (opts.stats) stderr.write(stats.toString()); + + return prepareResult(null); + + // Default implementation to read files on node + async function readFileNode(filename, baseDir) { + let name = path.resolve(baseDir, filename); + try { + stats.readCount++; + return await fs.promises.readFile(name, "utf8"); + } catch (e) { + return null; + } + } + + // Default implementation to write files on node + async function writeFileNode(filename, contents, baseDir) { + try { + stats.writeCount++; + const dirPath = path.resolve(baseDir, path.dirname(filename)); + const filePath = path.join(dirPath, path.basename(filename)); + await fs.promises.mkdir(dirPath, { recursive: true }); + await fs.promises.writeFile(filePath, contents); + return true; + } catch (e) { + return false; + } + } + + // Default implementation to list files on node + async function listFilesNode(dirname, baseDir) { + try { + stats.readCount++; + return (await fs.promises.readdir(path.join(baseDir, dirname))) + .filter(file => extension_re_except_d.test(file)); + } catch (e) { + return null; + } + } + + // Writes to stdout + function writeStdout(contents) { + if (!writeStdout.used) { + writeStdout.used = true; + stats.writeCount++; + } + stdout.write(contents); + } + + // Crash handler + function crash(stage, e) { + const BAR = stdoutColors.red("▌ "); + console.error([ + EOL, + BAR, "Whoops, the AssemblyScript compiler has crashed during ", stage, " :-(", EOL, + BAR, EOL, + (typeof e.stack === "string" + ? [ + BAR, "Here is the stack trace hinting at the problem, perhaps it's useful?", EOL, + BAR, EOL, + e.stack.replace(/^/mg, BAR), EOL + ] + : [ + BAR, "There is no stack trace. Perhaps a Binaryen exception above / in console?", EOL, + BAR, EOL, + BAR, "> " + e.stack, EOL + ] + ).join(""), + BAR, EOL, + BAR, "If you see where the error is, feel free to send us a pull request. If not,", EOL, + BAR, "please let us know: https://github.com/AssemblyScript/assemblyscript/issues", EOL, + BAR, EOL, + BAR, "Thank you!", EOL + ].join("")); + process.exit(1); + } +} + +function isObject(arg) { + return Object.prototype.toString.call(arg) === "[object Object]"; +} + +async function getConfig(file, baseDir, readFile) { + const contents = await readFile(file, baseDir); + const location = path.join(baseDir, file); + if (!contents) return null; + + // obtain the configuration + let config; + try { + config = JSON.parse(contents); + } catch(ex) { + throw new Error(`Asconfig is not valid json: ${location}`); + } + + // validate asconfig shape + if (config.options && !isObject(config.options)) { + throw new Error(`Asconfig.options is not an object: ${location}`); + } + + if (config.include && !Array.isArray(config.include)) { + throw new Error(`Asconfig.include is not an array: ${location}`); + } + + if (config.targets) { + if (!isObject(config.targets)) { + throw new Error(`Asconfig.targets is not an object: ${location}`); + } + const targets = Object.keys(config.targets); + for (let i = 0; i < targets.length; i++) { + const target = targets[i]; + if (!isObject(config.targets[target])) { + throw new Error(`Asconfig.targets.${target} is not an object: ${location}`); + } + } + } + + if (config.extends && typeof config.extends !== "string") { + throw new Error(`Asconfig.extends is not a string: ${location}`); + } + + return config; +} + +/** Checks diagnostics emitted so far for errors. */ +export function checkDiagnostics(program, stderr, reportDiagnostic, useColors) { + if (typeof useColors === "undefined" && stderr) useColors = stderr.isTTY; + var numErrors = 0; + do { + let diagnostic = assemblyscript.nextDiagnostic(program); + if (!diagnostic) break; + if (stderr) { + stderr.write( + assemblyscript.formatDiagnostic(diagnostic, useColors, true) + + EOL + EOL + ); + } + if (reportDiagnostic) { + function wrapRange(range) { + return range && { + start: assemblyscript.getRangeStart(range), + end: assemblyscript.getRangeEnd(range), + source: wrapSource(assemblyscript.getRangeSource(range)) + } || null; + } + function wrapSource(source) { + return source && { + normalizedPath: assemblyscript.getSourceNormalizedPath(source) + } || null; + } + reportDiagnostic({ + message: assemblyscript.getDiagnosticMessage(diagnostic), + code: assemblyscript.getDiagnosticCode(diagnostic), + category: assemblyscript.getDiagnosticCategory(diagnostic), + range: wrapRange(assemblyscript.getDiagnosticRange(diagnostic)), + relatedRange: wrapRange(assemblyscript.getDiagnosticRelatedRange(diagnostic)) + }); + } + if (assemblyscript.isError(diagnostic)) ++numErrors; + } while (true); + return numErrors; +} + +export class Stats { + readCount = 0; + writeCount = 0; + parseTime = 0; + parseCount = 0; + initializeTime = 0; + initializeCount = 0; + compileTime = 0; + compileCount = 0; + emitTime = 0; + emitCount = 0; + validateTime = 0; + validateCount = 0; + optimizeTime = 0; + optimizeCount = 0; + transformTime = 0; + transformCount = 0; + begin() { + return process.hrtime(); + } + end(begin) { + const hrtime = process.hrtime(begin); + return hrtime[0] * 1e9 + hrtime[1]; + } + toString() { + const formatTime = time => time ? `${(time / 1e6).toFixed(3)} ms` : "n/a"; + const keys = Object.keys(this).filter(key => key.endsWith("Time")).map(key => key.substring(0, key.length - 4)); + const times = keys.map(key => formatTime(this[`${key}Time`])); + const counts = keys.map(key => this[`${key}Count`].toString()); + const keysLen = keys.reduce((current, key) => Math.max(key.length, current), 0); + const timesLen = times.reduce((current, time) => Math.max(time.length, current), 0); + const countsLen = counts.reduce((current, count) => Math.max(count.length, current), 0); + const totalLen = keysLen + timesLen + countsLen + 6; + const out = []; + out.push(`╭─${"─".repeat(totalLen)}─╮${EOL}`); + const header = `Stats`; + out.push(`│ ${header}${" ".repeat(totalLen - header.length)} │${EOL}`); + out.push(`╞═${"═".repeat(keysLen)}═╤═${"═".repeat(timesLen)}═╤═${"═".repeat(countsLen)}═╡${EOL}`); + for (let i = 0, k = keys.length; i < k; ++i) { + out.push(`│ ${keys[i].padEnd(keysLen)} │ ${times[i].padStart(timesLen)} │ ${counts[i].padStart(countsLen)} │${EOL}`); + } + out.push(`├─${"─".repeat(keysLen)}─┴─${"─".repeat(timesLen)}─┴─${"─".repeat(countsLen)}─┤${EOL}`); + const totalTime = `Took ${formatTime(this.total)}`; + out.push(`│ ${totalTime}${" ".repeat(totalLen - totalTime.length)} │${EOL}`); + const readsWrites = `${this.readCount} reads, ${this.writeCount} writes`; + out.push(`│ ${readsWrites}${" ".repeat(totalLen - readsWrites.length)} │${EOL}`); + out.push(`╰─${"─".repeat(totalLen)}─╯${EOL}`); + return out.join(""); + } +} + +var allocBuffer = typeof global !== "undefined" && global.Buffer + ? global.Buffer.allocUnsafe || (len => new global.Buffer(len)) + : len => new Uint8Array(len); + +/** Creates a memory stream that can be used in place of stdout/stderr. */ +export function createMemoryStream(fn) { + var stream = []; + stream.write = function(chunk) { + if (fn) fn(chunk); + if (typeof chunk === "string") { + let buffer = allocBuffer(utf8.length(chunk)); + utf8.write(chunk, buffer, 0); + chunk = buffer; + } + this.push(chunk); + }; + stream.reset = function() { + stream.length = 0; + }; + stream.toBuffer = function() { + var offset = 0, i = 0, k = this.length; + while (i < k) offset += this[i++].length; + var buffer = allocBuffer(offset); + offset = i = 0; + while (i < k) { + buffer.set(this[i], offset); + offset += this[i].length; + ++i; + } + return buffer; + }; + stream.toString = function() { + var buffer = this.toBuffer(); + return utf8.read(buffer, 0, buffer.length); + }; + return stream; +} + +/** Compatible TypeScript compiler options for syntax highlighting etc. */ +export const tscOptions = { + alwaysStrict: true, + strictNullChecks: true, + noImplicitAny: true, + noImplicitReturns: true, + noImplicitThis: true, + noEmitOnError: true, + noPropertyAccessFromIndexSignature: true, + experimentalDecorators: true, + target: "esnext", + noLib: true, + types: [], + allowJs: false +}; + +export * as default from "./index.js"; diff --git a/cli/asc.json b/cli/options.json similarity index 85% rename from cli/asc.json rename to cli/options.json index e8b049cf63..c68bc7e72a 100644 --- a/cli/asc.json +++ b/cli/options.json @@ -11,12 +11,6 @@ "type": "b", "alias": "h" }, - "noColors": { - "category": "General", - "description": "Disables terminal colors.", - "type": "b", - "default": false - }, "config": { "category": "General", "description": "Configuration file to apply. CLI arguments take precedence.", @@ -25,7 +19,7 @@ }, "target": { "category": "General", - "description": "Target configuration to use. Defaults to 'release'.", + "description": "Configuration file target to use. Defaults to 'release'.", "type": "s", "cliOnly": true }, @@ -70,45 +64,30 @@ "outFile": { "category": "Output", - "description": "Specifies the output file. File extension indicates format.", + "description": "Specifies the WebAssembly output file (.wasm).", "type": "s", "alias": "o", "isPath": true }, - "binaryFile": { - "category": "Output", - "description": "Specifies the binary output file (.wasm).", - "type": "s", - "alias": "b", - "isPath": true - }, "textFile": { "category": "Output", - "description": "Specifies the text output file (.wat).", + "description": "Specifies the WebAssembly text output file (.wat).", "type": "s", "alias": "t", "isPath": true }, - "jsFile": { - "category": "Output", - "description": "Specifies the JavaScript (via wasm2js) output file (.js).", - "type": "s", - "alias": "j", - "isPath": true - }, - "idlFile": { + "bindings": { "category": "Output", - "description": "Specifies the WebIDL output file (.webidl).", - "type": "s", - "alias": "i", - "isPath": true - }, - "tsdFile": { - "category": "Output", - "description": "Specifies the TypeScript definition output file (.d.ts).", - "type": "s", - "alias": "d", - "isPath": true + "description": [ + "Specifies the bindings to generate (.js + .d.ts).", + "", + " esm JavaScript bindings & typings for ESM integration.", + " raw Like esm, but exports just the instantiate function.", + " Useful where modules are meant to be instantiated", + " multiple times or non-ESM imports must be provided." + ], + "type": "S", + "alias": "b" }, "sourceMap": { @@ -158,7 +137,7 @@ }, "zeroFilledMemory": { "category": "Features", - "description": "Assume that imported memory is zero filled. Requires importMemory.", + "description": "Assume imported memory is zeroed. Requires importMemory.", "type": "b", "default": false }, @@ -174,6 +153,15 @@ "type": "b", "default": false }, + "exportStart": { + "category": "Features", + "description": [ + "Exports the start function using the specified name instead", + "of calling it implicitly. Useful for WASI or to obtain the", + "exported memory before executing any code accessing it." + ], + "type": "s" + }, "runtime": { "category": "Features", "description": [ @@ -204,21 +192,13 @@ "default": 0, "type": "i" }, - "explicitStart": { - "category": "Features", - "description": "Exports an explicit '_start' function to call.", - "type": "b", - "default": false - }, "enable": { "category": "Features", "description": [ "Enables WebAssembly features being disabled by default.", "", - " nontrapping-f2i Non-trapping float to integer ops.", - " bulk-memory Bulk memory operations.", - " simd SIMD types and operations.", " threads Threading and atomic operations.", + " simd SIMD types and operations.", " reference-types Reference types and operations.", " gc Garbage collection (WIP).", "" @@ -227,7 +207,10 @@ " exception-handling Exception handling.", " tail-calls Tail call operations.", " multi-value Multi value types.", - " memory64 Memory64 operations." + " memory64 Memory64 operations.", + " function-references Function reference types.", + " relaxed-simd Relaxed SIMD operations.", + " extended-const Extended const expressions." ], "type": "S", "mutuallyExclusive": "disable" @@ -239,6 +222,8 @@ "", " mutable-globals Mutable global imports and exports.", " sign-extension Sign-extension operations", + " nontrapping-f2i Non-trapping float to integer ops.", + " bulk-memory Bulk memory operations.", "" ], "type": "S", @@ -276,7 +261,7 @@ "transform": { "category": "API", - "description": "Specifies the path to a custom transform to 'require'.", + "description": "Specifies the path to a custom transform to load.", "type": "S", "isPath": true, "useNodeResolution": true @@ -315,10 +300,10 @@ "type": "s", "default": "." }, - "extension": { - "description": "Specifies an alternative file extension to use.", - "type": "s", - "cliOnly": true + "noColors": { + "description": "Disables terminal colors.", + "type": "b", + "default": false }, "noUnsafe": { "description": [ @@ -338,8 +323,8 @@ "type": "b", "default": false }, - "measure": { - "description": "Prints measuring information on I/O and compile times.", + "stats": { + "description": "Prints statistics on I/O and compile times.", "type": "b", "default": false }, @@ -365,16 +350,6 @@ "type": "S", "isPath": true }, - "traceResolution": { - "description": "Enables tracing of package resolution.", - "type": "b", - "default": false - }, - "listFiles": { - "description": "Lists files to be compiled and exits.", - "type": "b", - "default": false - }, "wasm": { "description": "Uses the specified Wasm binary of the compiler.", "type": "s" @@ -397,5 +372,6 @@ "-O2z": { "value": { "optimizeLevel": 2, "shrinkLevel": 2 } }, "-O3z": { "value": { "optimizeLevel": 3, "shrinkLevel": 2 } }, "-Ospeed": { "value": { "optimizeLevel": 3, "shrinkLevel": 0 } }, - "-Osize": { "value": { "optimizeLevel": 0, "shrinkLevel": 2, "converge": true } } + "-Osize": { "value": { "optimizeLevel": 0, "shrinkLevel": 2, "converge": true } }, + "--measure": { "value": { "stats": true } } } diff --git a/cli/shim/README.md b/cli/shim/README.md deleted file mode 100644 index 73b7e60d3c..0000000000 --- a/cli/shim/README.md +++ /dev/null @@ -1 +0,0 @@ -Shims used when bundling asc for browser usage. diff --git a/cli/shim/fs.js b/cli/shim/fs.js deleted file mode 100644 index f053ebf797..0000000000 --- a/cli/shim/fs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/cli/shim/path.js b/cli/shim/path.js deleted file mode 100644 index 28978caf27..0000000000 --- a/cli/shim/path.js +++ /dev/null @@ -1,531 +0,0 @@ -const process = require("process"); // ensure shim - -// https://github.com/browserify/path-browserify v1.0.1 -// -// Copyright (c) 2013 James Halliday -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function assertPath(path) { - if (typeof path !== 'string') { - throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); - } -} - -// Resolves . and .. elements in a path with directory names -function normalizeStringPosix(path, allowAboveRoot) { - var res = ''; - var lastSegmentLength = 0; - var lastSlash = -1; - var dots = 0; - var code; - for (var i = 0; i <= path.length; ++i) { - if (i < path.length) - code = path.charCodeAt(i); - else if (code === 47 /*/*/) - break; - else - code = 47 /*/*/; - if (code === 47 /*/*/) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } else if (lastSlash !== i - 1 && dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { - if (res.length > 2) { - var lastSlashIndex = res.lastIndexOf('/'); - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); - } - lastSlash = i; - dots = 0; - continue; - } - } else if (res.length === 2 || res.length === 1) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - if (res.length > 0) - res += '/..'; - else - res = '..'; - lastSegmentLength = 2; - } - } else { - if (res.length > 0) - res += '/' + path.slice(lastSlash + 1, i); - else - res = path.slice(lastSlash + 1, i); - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } else if (code === 46 && dots !== -1) { - ++dots; - } else { - dots = -1; - } - } - return res; -} - -function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root; - var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); - if (!dir) { - return base; - } - if (dir === pathObject.root) { - return dir + base; - } - return dir + sep + base; -} - -var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = ''; - var resolvedAbsolute = false; - var cwd; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path; - if (i >= 0) - path = arguments[i]; - else { - if (cwd === undefined) - cwd = process.cwd(); - path = cwd; - } - - assertPath(path); - - // Skip empty entries - if (path.length === 0) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) - return '/' + resolvedPath; - else - return '/'; - } else if (resolvedPath.length > 0) { - return resolvedPath; - } else { - return '.'; - } - }, - - normalize: function normalize(path) { - assertPath(path); - - if (path.length === 0) return '.'; - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/; - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute); - - if (path.length === 0 && !isAbsolute) path = '.'; - if (path.length > 0 && trailingSeparator) path += '/'; - - if (isAbsolute) return '/' + path; - return path; - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path); - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; - }, - - join: function join() { - if (arguments.length === 0) - return '.'; - var joined; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - assertPath(arg); - if (arg.length > 0) { - if (joined === undefined) - joined = arg; - else - joined += '/' + arg; - } - } - if (joined === undefined) - return '.'; - return posix.normalize(joined); - }, - - relative: function relative(from, to) { - assertPath(from); - assertPath(to); - - if (from === to) return ''; - - from = posix.resolve(from); - to = posix.resolve(to); - - if (from === to) return ''; - - if (from === ".") return to; // FIX for 'odule.ts' (see issue #1398) - - // Trim any leading backslashes - var fromStart = 1; - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) - break; - } - var fromEnd = from.length; - var fromLen = fromEnd - fromStart; - - // Trim any leading backslashes - var toStart = 1; - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) - break; - } - var toEnd = to.length; - var toLen = toEnd - toStart; - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen; - var lastCommonSep = -1; - var i = 0; - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } - } - break; - } - var fromCode = from.charCodeAt(fromStart + i); - var toCode = to.charCodeAt(toStart + i); - if (fromCode !== toCode) - break; - else if (fromCode === 47 /*/*/) - lastCommonSep = i; - } - - var out = ''; - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) - out += '..'; - else - out += '/..'; - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return out + to.slice(toStart + lastCommonSep); - else { - toStart += lastCommonSep; - if (to.charCodeAt(toStart) === 47 /*/*/) - ++toStart; - return to.slice(toStart); - } - }, - - _makeLong: function _makeLong(path) { - return path; - }, - - dirname: function dirname(path) { - assertPath(path); - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) return '//'; - return path.slice(0, end); - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); - assertPath(path); - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return ''; - var extIdx = ext.length - 1; - var firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - - if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; - return path.slice(start, end); - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); - } - }, - - extname: function extname(path) { - assertPath(path); - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); - } - return _format('/', pathObject); - }, - - parse: function parse(path) { - assertPath(path); - - var ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) return ret; - var code = path.charCodeAt(0); - var isAbsolute = code === 47 /*/*/; - var start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } else { - start = 0; - } - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - var i = path.length - 1; - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot); - ret.base = path.slice(1, end); - } else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - } - ret.ext = path.slice(startDot, end); - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; - - return ret; - }, - - sep: '/', - delimiter: ':', - win32: null, - posix: null -}; - -posix.posix = posix; - -module.exports = posix; diff --git a/cli/transform.d.ts b/cli/transform.d.ts deleted file mode 100644 index c63b3cb4ee..0000000000 --- a/cli/transform.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @fileoverview Compiler transform interface definitions. - * @license Apache-2.0 - */ - -import { Program, Parser, Module } from ".."; -import { OutputStream } from "./asc"; - -export abstract class Transform { - - /** Program reference. */ - readonly program: Program; - - /** Base directory. */ - readonly baseDir: string; - - /** Output stream used by the compiler. */ - readonly stdout: OutputStream; - - /** Error stream used by the compiler. */ - readonly stderr: OutputStream; - - /** Logs a message to console. */ - readonly log: typeof console.log; - - /** Writes a file to disk. */ - writeFile(filename: string, contents: string | Uint8Array, baseDir: string): boolean; - - /** Reads a file from disk. */ - readFile(filename: string, baseDir: string): string | null; - - /** Lists all files in a directory. */ - listFiles(dirname: string, baseDir: string): string[] | null; - - /** Called when parsing is complete, before a program is instantiated from the AST. */ - afterParse?(parser: Parser): void; - - /** Called after the program is instantiated. */ - afterInitialize?(program: Program): void; - - /** Called when compilation is complete, before the module is being validated. */ - afterCompile?(module: Module): void; -} diff --git a/cli/transform.js b/cli/transform.js deleted file mode 100644 index 8f68d7a2e5..0000000000 --- a/cli/transform.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @fileoverview Compiler transform interface. - * @license Apache-2.0 - */ - -// becomes replaced with the actual base by asc -exports.Transform = function Transform() { /* nop */ }; diff --git a/cli/tsconfig.json b/cli/tsconfig.json new file mode 100644 index 0000000000..bcb1b8a11d --- /dev/null +++ b/cli/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig-base.json", + "include": [ + "./**/*.ts" + ] +} diff --git a/cli/util/colors.d.ts b/cli/util/colors.d.ts deleted file mode 100644 index 75d689a50f..0000000000 --- a/cli/util/colors.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @fileoverview Terminal colors utility definitions. - * @license Apache-2.0 - */ - -interface Colors { - /** Whether terminal colors are supported. */ - supported: boolean; - /** Colors a string in gray if {@link supported}. */ - gray(text: string): string; - /** Colors a string in red if {@link supported}. */ - red(text: string): string; - /** Colors a string in green if {@link supported}. */ - green(text: string): string; - /** Colors a string in yellow if {@link supported}. */ - yellow(text: string): string; - /** Colors a string in blue if {@link supported}. */ - blue(text: string): string; - /** Colors a string in magenta if {@link supported}. */ - magenta(text: string): string; - /** Colors a string in cyan if {@link supported}. */ - cyan(text: string): string; - /** Colors a string in white if {@link supported}. */ - white(text: string): string; -} - -interface Exports extends Colors { - /** Standard output wrapper. */ - stdout: Colors; - /** Standard error wrapper. */ - stderr: Colors; - /** Creates an instance for the specified stream. */ - from(stream: Record, base?: Record): Colors; - /** Gray color escape sequence. */ - GRAY: string; - /** Red color escape sequence. */ - RED: string; - /** Green color escape sequence. */ - GREEN: string; - /** Yellow color escape sequence. */ - YELLOW: string; - /** Blue color escape sequence. */ - BLUE: string; - /** Magenta color escape sequence. */ - MAGENTA: string; - /** Cyan color escape sequence. */ - CYAN: string; - /** White color escape sequence. */ - WHITE: string; - /** Reset color escape sequence. */ - RESET: string; -} - -declare const colors: Exports; -export = colors; diff --git a/cli/util/colors.js b/cli/util/colors.js deleted file mode 100644 index 798960c7a0..0000000000 --- a/cli/util/colors.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @fileoverview Terminal colors utility. - * @license Apache-2.0 - */ - -var proc = typeof process !== "undefined" && process || {}; -var isCI = proc.env && "CI" in proc.env; // doesn't work when bundled because 'process' is a mock - -function from(stream, base) { - var colors = base || {}; - colors.supported = (stream && !!stream.isTTY) || isCI; - colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text; - colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text; - colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text; - colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text; - colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text; - colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text; - colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text; - colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text; - return colors; -} - -exports.stdout = from(proc.stdout, exports); -exports.stderr = from(proc.stderr); -exports.from = from; - -exports.GRAY = "\u001b[90m"; -exports.RED = "\u001b[91m"; -exports.GREEN = "\u001b[92m"; -exports.YELLOW = "\u001b[93m"; -exports.BLUE = "\u001b[94m"; -exports.MAGENTA = "\u001b[95m"; -exports.CYAN = "\u001b[96m"; -exports.WHITE = "\u001b[97m"; -exports.RESET = "\u001b[0m"; diff --git a/cli/util/find.d.ts b/cli/util/find.d.ts deleted file mode 100644 index cc2aeaed37..0000000000 --- a/cli/util/find.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @fileoverview File finding utility definitions. - * @license Apache-2.0 - */ - -export function files(dirname: string, filter?: ((name: string) => bool) | RegExp): string[]; diff --git a/cli/util/mkdirp.d.ts b/cli/util/mkdirp.d.ts deleted file mode 100644 index 7a0658d500..0000000000 --- a/cli/util/mkdirp.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @fileoverview Recursive mkdir definitions. - * @license Apache-2.0 - */ - -interface Options { - mode?: number; -} -declare function mkdirp(path: string, options?: Options): string | null; -export = mkdirp; diff --git a/cli/util/mkdirp.js b/cli/util/mkdirp.js deleted file mode 100644 index 24d94043b0..0000000000 --- a/cli/util/mkdirp.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @fileoverview Recursive mkdir. - * @license - * Copyright 2010 James Halliday (mail@substack.net) - * - * This project is free software released under the MIT/X11 license: - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -const path = require("path"); -const fs = require("fs"); -const process = require("process"); // ensure shim - -module.exports = function mkdirp(p, opts, made) { - if (!opts || typeof opts !== "object") { - opts = { mode: opts }; - } - var mode = opts.mode; - if (mode === undefined) { - mode = 0o777 & (~process.umask()); - } - if (!made) made = null; - p = path.resolve(p); - try { - fs.mkdirSync(p, mode); - made = made || p; - } catch (err0) { - switch (err0.code) { - case "ENOENT": - made = mkdirp(path.dirname(p), opts, made); - mkdirp(p, opts, made); - break; - default: - var stat; - try { - stat = fs.statSync(p); - } catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - return made; -}; diff --git a/cli/util/utf8.d.ts b/cli/util/utf8.d.ts deleted file mode 100644 index d419c041e3..0000000000 --- a/cli/util/utf8.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @fileoverview UTF8 utility definitions. - * @license Apache-2.0 - */ - -/** - * Calculates the UTF8 byte length of a string. - * @param {string} string String - * @returns {number} Byte length - */ -export function length(string: string): number; - -/** - * Reads UTF8 bytes as a string. - * @param {Uint8Array} buffer Source buffer - * @param {number} start Source start - * @param {number} end Source end - * @returns {string} String read - */ -export function read(buffer: Uint8Array, start: number, end: number): string; - -/** - * Writes a string as UTF8 bytes. - * @param {string} string Source string - * @param {Uint8Array} buffer Destination buffer - * @param {number} offset Destination offset - * @returns {number} Bytes written - */ -export function write(string: string, buffer: Uint8Array, offset: number): number; diff --git a/cli/util/utf8.js b/cli/util/utf8.js deleted file mode 100644 index 22f16671e9..0000000000 --- a/cli/util/utf8.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @fileoverview UTF8 utility. - * @license Apache-2.0 - */ - -// @protobufjs/utf8 - -/** - * A minimal UTF8 implementation for number arrays. - * @memberof util - * @namespace - */ -var utf8 = exports; - -/** - * Calculates the UTF8 byte length of a string. - * @param {string} string String - * @returns {number} Byte length - */ -utf8.length = function utf8_length(string) { - var len = 0, - c = 0; - for (var i = 0, l = string.length; i < l; ++i) { - c = string.charCodeAt(i); - if (c < 128) - len += 1; - else if (c < 2048) - len += 2; - else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { - ++i; - len += 4; - } else - len += 3; - } - return len; -}; - -/** - * Reads UTF8 bytes as a string. - * @param {Uint8Array} buffer Source buffer - * @param {number} start Source start - * @param {number} end Source end - * @returns {string} String read - */ -utf8.read = function utf8_read(buffer, start, end) { - var len = end - start; - if (len < 1) - return ""; - var parts = null, - chunk = [], - i = 0, // char offset - t; // temporary - while (start < end) { - t = buffer[start++]; - if (t < 128) - chunk[i++] = t; - else if (t > 191 && t < 224) - chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; - else if (t > 239 && t < 365) { - t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; - chunk[i++] = 0xD800 + (t >> 10); - chunk[i++] = 0xDC00 + (t & 1023); - } else - chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; - if (i > 8191) { - (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); - i = 0; - } - } - if (parts) { - if (i) - parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); - return parts.join(""); - } - return String.fromCharCode.apply(String, chunk.slice(0, i)); -}; - -/** - * Writes a string as UTF8 bytes. - * @param {string} string Source string - * @param {Uint8Array} buffer Destination buffer - * @param {number} offset Destination offset - * @returns {number} Bytes written - */ -utf8.write = function utf8_write(string, buffer, offset) { - var start = offset, - c1, // character 1 - c2; // character 2 - for (var i = 0; i < string.length; ++i) { - c1 = string.charCodeAt(i); - if (c1 < 128) { - buffer[offset++] = c1; - } else if (c1 < 2048) { - buffer[offset++] = c1 >> 6 | 192; - buffer[offset++] = c1 & 63 | 128; - } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { - c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); - ++i; - buffer[offset++] = c1 >> 18 | 240; - buffer[offset++] = c1 >> 12 & 63 | 128; - buffer[offset++] = c1 >> 6 & 63 | 128; - buffer[offset++] = c1 & 63 | 128; - } else { - buffer[offset++] = c1 >> 12 | 224; - buffer[offset++] = c1 >> 6 & 63 | 128; - buffer[offset++] = c1 & 63 | 128; - } - } - return offset - start; -}; diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index c039a8000c..0000000000 --- a/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import "./src/glue/js"; -export * from "./src"; diff --git a/index.js b/index.js deleted file mode 100644 index a2ab787e8e..0000000000 --- a/index.js +++ /dev/null @@ -1,11 +0,0 @@ -require("ts-node").register({ - project: require("path").join(__dirname, "src", "tsconfig.json"), - compilerHost: true, - skipIgnore: true, - files: true, - compilerOptions: { - removeComments: false - } -}); -require("./src/glue/js"); -module.exports = require("./src"); diff --git a/index.release.d.ts b/index.release.d.ts deleted file mode 100644 index 388aca2060..0000000000 --- a/index.release.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -export * from "assemblyscript"; diff --git a/index.release.js b/index.release.js deleted file mode 100644 index b459cec30a..0000000000 --- a/index.release.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./dist/assemblyscript"); diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 0000000000..9ac01cc665 --- /dev/null +++ b/lib/README.md @@ -0,0 +1,14 @@ +Library +======= + +Additional packages provided by the main package. + +| Package | Description +|------------------------------------|------------------------- +| [@assemblyscript/loader](./loader) | Module loader utility +| [@assemblyscript/rtrace](./rtrace) | Runtime tracing utility +| binaryen | Binaryen proxy + +The Binaryen proxy herein is imported accross the code base and forwards the +`binaryen` npm package by default. It can be modified to use a custom build, +for example for testing purposes. diff --git a/lib/binaryen.d.ts b/lib/binaryen.d.ts new file mode 100644 index 0000000000..facd164949 --- /dev/null +++ b/lib/binaryen.d.ts @@ -0,0 +1,2 @@ +export * from "binaryen"; +export { default } from "binaryen"; diff --git a/lib/binaryen.js b/lib/binaryen.js new file mode 100644 index 0000000000..facd164949 --- /dev/null +++ b/lib/binaryen.js @@ -0,0 +1,2 @@ +export * from "binaryen"; +export { default } from "binaryen"; diff --git a/lib/loader/README.md b/lib/loader/README.md index 58ce74c630..ff1e805977 100644 --- a/lib/loader/README.md +++ b/lib/loader/README.md @@ -1,5 +1,318 @@ # AssemblyScript Loader -A convenient loader for [AssemblyScript](https://assemblyscript.org) modules. Demangles module exports to a friendly object structure compatible with TypeScript definitions and provides useful utility to read/write data from/to memory. +A tiny module loader that makes working with AssemblyScript modules as convenient as it gets without sacrificing efficiency. It about mirrors the relevant parts of the WebAssembly API while also providing utility to allocate and read strings, arrays and classes. -[Documentation](https://assemblyscript.org/loader.html) +**DEPRECATION NOTICE:** The loader has been deprecated in AssemblyScript 0.20. It will likely continue to work for a while, but it is recommended to switch to the new [static bindings](https://www.assemblyscript.org/compiler.html#host-bindings) generation. + +## Example + +```ts +import loader from "@assemblyscript/loader"; // or require +loader.instantiate( + // Binary to instantiate + fetch("optimized.wasm"), // or fs.readFileSync + // or fs.promises.readFile + // or just a buffer + // Additional imports + { ... } +).then(({ exports }) => { + ... +}) +``` + +The loader basically instantiates the module using `WebAssembly` APIs, but also adds additional utility. + +## Installation + +The loader can be installed from [npm](https://www.npmjs.com/package/@assemblyscript/loader): + +```sh +npm install --save @assemblyscript/loader +``` + +On the web: + +```html + + + + +``` + +## Usage + +One task the loader does not perform is to implicitly translate between WebAssembly pointers and JavaScript objects, and that's where the mixed in utility comes into play. For example, if one has + +```ts +// AssemblyScript +export function concat(a: string, b: string): string { + return a + b +} +``` + +and then wants to call `concat` externally, the string arguments cannot just be JavaScript strings but must first be allocated in the module's memory with their lifetime tracked, like so: + +```js +// JavaScript +const { concat } = myModule.exports +const { __newString, __getString } = myModule.exports + +function doConcat(aStr, bStr) { + let aPtr = __newString(aStr) + let bPtr = __newString(bStr) + let cPtr = concat(aPtr, bPtr) + let cStr = __getString(cPtr) + return cStr +} + +console.log(doConcat("Hello ", "world!")) +``` + +### Creating arrays + +Arrays (or more advanced classes for that matter) require a bit more cooperation because we need to know their value type in order to work with them properly. To achieve this, every class has a unique id internally, and a chunk of runtime type information (RTTI) is shipped with the module to evaluate class types. Here's an example of working with an `Int32Array`: + +```ts +// AssemblyScript +export function sum(arr: Int32Array): i32 { + let sum = 0 + for (let i = 0, k = arr.length; i < k; ++i) { + sum += unchecked(arr[i]) + } + return sum +} +export const Int32Array_ID = idof() +``` + +```js +// JavaScript +const { sum, Int32Array_ID } = myModule.exports +const { __newArray } = myModule.exports + +function doSum(values) { + const arrPtr = __newArray(Int32Array_ID, values) + return sum(arrPtr) +} + +console.log(doSum([1, 2, 3])) +``` + +This works with all kinds of arrays, except that ids are different and values are interpreted differently, of course. + +### Reading arrays + +If one is instead interested in the values of an array being returned by the module, there are two approaches to this. Let's say we have the following module: + +```ts +// AssemblyScript +export function getRandomArray(len: i32): Int32Array { + const arr = new Int32Array(len) + // fill with random values + return arr +} +``` + +The first is, obviously, to read the array's values from the module's memory by essentially copying them to a JS array + +```js +// JavaScript +const { getRandomArray } = myModule.exports +const { __getArray } = myModule.exports + +function doGetRandomArray(len) { + const arrPtr = getRandomArray(len) + const values = __getArray(arrPtr) + return values +} + +console.log(doGetRandomArray(10)) +``` + +which is always safe, while the second is to create a live view on the array, enabling two-way modification of its values: + +```js +// JavaScript +const { getRandomArray } = myModule.exports +const { __getArrayView, __pin, __unpin } = myModule.exports + +function doGetRandomArrayView(len) { + const arrPtr = __pin(getRandomArray(len)) // pin if necessary + const view = __getArrayView(arrPtr) + return { ptr, view } +} + +const randomArray = doGetRandomArrayView(10) +console.log(randomArray.view) +__unpin(randomArray.ptr) // unpin if necessary +``` + +The latter variant can be more efficient (and useful) but is a little dangerous because the view may become detached from the module's memory when memory automatically grows. Also, the viewed array can grow automatically when pushed to, with the view then referencing random memory. Pushing to an array can be avoided quite easily, yet it is notoriously hard to predict when module memory grows - but one can try to set a sufficiently large size of `--initialMemory` or defensively trigger a sufficiently large dynamic allocation being freed immediately before dealing with potentially problematic views. + +### Custom classes + +As mentioned earlier, the loader understands how to make a nice object structure of a module's exports, and it is possible to utilize it to work with classes in a more natural way. For example, when calling the following function externally + +```ts +// AssemblyScript +export class Foo { + constructor(public str: string) {} + getString(): string { + return this.str + } +} + +export function getFoo(): Foo { // this one + return new Foo("Hello world!") +} +``` + +one can wrap the received pointer in a `myModule.exports.Foo` instance: + +```js +// JavaScript +const { Foo, getFoo } = myModule.exports +const { __getString, __pin, __unpin } = myModule.exports + +const fooPtr = __pin(getFoo()) // pin if necessary +const foo = Foo.wrap(fooPtr) +const strPtr = foo.getString() +console.log(__getString(strPtr)) +__unpin(fooPtr) // unpin if necessary +``` + +## API + +For reference, here comes the full API provided by the loader. + +::: tip +Copying from and extending the examples above is typically sufficient. +::: + +### Static members + +* ```ts + function instantiate( + moduleOrBuffer: WasmInstantiable, + imports?: WasmImports + ): Promise + ``` + Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. + +* ```ts + function instantiateSync( + moduleOrBuffer: WasmInstantiable, + imports?: WasmImports + ): ASUtil & T + ``` + Synchronously instantiates an AssemblyScript module from a WebAssembly.Module or binary buffer. Not recommended. + +* ```ts + function instantiateStreaming( + response: Response | PromiseLike, + imports?: WasmImports + ): Promise + ``` + Asynchronously instantiates an AssemblyScript module from a response, i.e. as obtained by fetch. + +* ```ts + function demangle( + exports: WasmExports, + baseModule?: Object + ): T + ``` + Demangles an AssemblyScript module's exports to a friendly object structure. You usually don't have to call this manually as instantiation does this implicitly. + +Note that `T` above can either be omitted if the shape of the module is unknown, or can reference a `.d.ts` (i.e. `typeof MyModule`) as produced by the compiler with the `-d` option. + +### Module instance utility + +The following utility functions are mixed into the module's exports. + +* ```ts + function __newString(str: string): number + ``` + Allocates a new string in the module's memory and returns a pointer to it. Requires `--exportRuntime` for access to `__new`. + +* ```ts + function __newArray( + id: number, + values: valuesOrCapacity?: number[] | ArrayBufferView | number + ): number + ``` + Allocates a new array in the module's memory and returns a pointer to it. The `id` is the unique runtime id of the respective array class. If you are using `Int32Array` for example, the best way to know the id is an `export const Int32Array_ID = idof()`. Requires `--exportRuntime` for access to `__new`. The `values` parameter сan also be used to pre-allocate an otherwise empty array of a certain capacity. + +* ```ts + function __getString(ptr: number): string + ``` + Copies a string's value from the module's memory to a JavaScript string. `ptr` must not be zero. + +* ```ts + function __getFunction(ptr: number): ((...args: unknown[]) => unknown) | null + ``` + Gets a callable function object from the module's memory containing its table index. `ptr` must not be zero. + +* ```ts + function __getArrayBuffer(ptr: number): ArrayBuffer + ``` + Copies an ArrayBuffer's value from the module's memory to a JavaScript buffer. `ptr` must not be zero. + +* ```ts + function __getArray(ptr: number): number[] + ``` + Copies an array's values from the module's memory to a JavaScript array. Infers the array type from RTTI. `ptr` must not be zero. + +* ```ts + function __getArrayView(ptr: number): TypedArray + ``` + Gets a live view on the values of an array in the module's memory. Infers the array type from RTTI. `ptr` must not be zero. + + This differs from `__getArray` in that the data isn't copied but remains live in both directions. That's faster but also unsafe because if the array grows or becomes garbage collected, the view will no longer represent the correct memory region and modifying its values in this state will most likely corrupt memory or otherwise explode. Use, but use with care. + +* ```ts + function __getInt8ArrayView(ptr: number): Int8Array + function __getUint8ArrayView(ptr: number): Uint8Array + function __getUint8ClampedArrayView(ptr: number): Uint8ClampedArray + function __getInt16ArrayView(ptr: number): Int16Array + function __getUint16ArrayView(ptr: number): Uint16Array + function __getInt32ArrayView(ptr: number): Int32Array + function __getUint32ArrayView(ptr: number): Uint32Array + function __getInt64ArrayView(ptr: number): BigInt64Array + function __getUint64ArrayView(ptr: number): BigUint64Array + function __getFloat32ArrayView(ptr: number): Float32Array + function __getFloat64ArrayView(ptr: number): Float64Array + ``` + Slightly more efficient variants of `__getArrayView` where the type of the array is know beforehand. Doesn't try to infer the type. + +### Module instance runtime interface + +When compiling with `--exportRuntime`, the loader will expose the runtime interface (`__new`, `__pin`, `__unpin`, `__collect`) as well. + +## Convenience vs. efficiency + +Making the loader's API any more convenient has its tradeoffs. One would either have to include extended type information with the module itself or generate an additional JavaScript file of glue code that does (and hides) all the lifting. As such, one can consider the loader as a small and efficient building block that can do it all, yet does not sacrifice efficiency. If that's not exactly what you are looking for, take a look at more convenient tools below. Just remember that these have tradeoffs. + +### More convenient tools + +* [as-bind](https://github.com/torch2424/as-bind) is a library, built on top of the loader, to make passing high-level data structures between AssemblyScript and JavaScript more convenient. + +## Advanced usage + +### Direct memory access + +All of the above can be mixed with direct memory accesses on `myModule.exports.memory.buffer`, for instance by adhering to class layout. + +### TypeScript definitions + +The compiler is able to emit definitions using the `-d` command line option that are compatible with modules demangled by the loader, and these can be used for proper typings in development: + +```ts +// TypeScript +import type * as MyModule from "myModule"; // pointing at the generated d.ts + +loader.instantiate( + fetch("myModule.wasm"), + { ... } +).then(({ exports }) => { + ... +}) +``` diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index 8db7280e14..f0e484ab6b 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -24,9 +24,6 @@ export interface ASUtil { memory?: WebAssembly.Memory; table?: WebAssembly.Table; - /** Explicit start function, if requested. */ - _start(): void; - /** Copies a string's value from the module's memory. */ __getString(ptr: number): string; /** Copies an ArrayBuffer's value from the module's memory. */ diff --git a/lib/loader/package.json b/lib/loader/package.json index 8b9a69518f..2cd178daad 100644 --- a/lib/loader/package.json +++ b/lib/loader/package.json @@ -33,8 +33,8 @@ }, "scripts": { "asbuild": "npm run asbuild:default && npm run asbuild:legacy", - "asbuild:default": "node ../../bin/asc tests/assembly/index.ts --binaryFile tests/build/default.wasm --exportRuntime --exportTable", - "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals --binaryFile tests/build/legacy.wasm --exportRuntime --exportTable", + "asbuild:default": "node ../../bin/asc tests/assembly/index.ts --outFile tests/build/default.wasm --exportRuntime --exportTable", + "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals --outFile tests/build/legacy.wasm --exportRuntime --exportTable", "build": "npx esm2umd loader index.js > umd/index.js", "test": "node tests && node tests/umd" }, diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index b105c1038df01f7ed7131609a0cb046f0d3d536e..13ca03ba984d8339fcefe53560826cbe7f81d450 100644 GIT binary patch delta 3660 zcmb7HU2Ggj9iN%qy}i4+v&T7K?6ZCL?Cs^Fwi6o1ahirUH;HqOlQgDj3A9acjN_!S z9Vc-vE>Q*R(nu842bXzDUmAo|kZ7R~4`%>KVW*UMk~_G3%Bld+Rd6h%CWL45coJL%#odTnGs_uUA+5Bj6%Twouj>d zV~59%IxMj;F+XwY6x)@qZ^q}RPCJf&>U`a(FK5q8)sDp|)ys2}Y`1L^AMe=XjgQYw zy}$+lFPxoYd;Rh8%X75bml_|RJU=@-HCbcBa(sNgRy#ZX^@&SUj<%sKolBR`v1d|PpQ=sN&Q7vtGn3Cx%$=D!JT-Tw_B?yepPZPTCDo3vJ9qxn+0$35 zv*#yj+Xu}2{KOS@BFUdh`J4>ryD~hN{=t^xcGfMH(oD0>B5A~e+{QF-9LC&=sF+*K zT<7+5zQ5=NjuaKAqJ?%21g>`JJ)vu%5_a4Aoc(RSttq)mc8i;T*uUnt6qEmjFhzu^ z6g1F$NGSWd+vR6)U@B{W<%ZGzur1)4tL8wg$mSz~qaC+mcn1V4<5c(Kz|68^-rziO#3V zTn8i$#O6pDm6a6`LR34%$KfdP{ccn@(sI)cBR$P!xm^Og6^I4E^==e)?Dve2s?A+f#WH-_LA~}@TutpenT6=Y$PnU!$S~oTJ z#FA$|XgG|l*V=)XxK0qZSc5IK3u-a1ijC{QCwacfjID~io+^^aU#DIm@JRaMmTvHp zsz*zxED?%sdnLVtciEq%4-(41(?B+GJ)FQjTVRnkaQ>r`%-|*#Q#qXtpaVQWmH{ zcEZ!}yjy9OVHa#rAt0PzRvTn*~bu2O+p}r`1L&|17u@iAwz! z=E;4ARkM&`cr{BWQO$}B)vV#=yop$OJ-D@mg>sw^v(1v>9a1LXVLK9@#Yur&8d*sS zR&Iw}rTGZFNV=~x-~k0%r@`n+N-8h`3TWdRqt~&Bm>s1hl@C)L#6Nm~fcu!QGG5Cv z>Q3x7r>0%}3m{#_fTrO(qTR z7s7(d#A_C+=V1erDD5fE?cJu%;mtDv3-fR)8PO5u-ZsDIZ+~m=M{My&W-&QkZpAIx zZ`i>slb{3+UWB=@bp~*B7ASV2d3)=kgTgR>a7>ZJqdzg#Yk%ClK$)S{Hwe70KISF+ zQj4a;4_o?p(Z1J`Z>5~^RDfdFj^Wg|P(W&3JN`;Lic(&rZpBp}B1UbvpIReQDn4v! zTv5HyZM{CvtP3J&^QmK+>duJE4@C(2t(0Jn%(43t^9#s0*=W%jc_!|V=JwsYcb$5( zhkeVAxhhOg-9GXF-l&J9QJPJwhmAW!IR#C(VP%^XT6EYMcBnR_woskZWdNiVsc#U; zI}-ZHBli2c^bouSC!>*U78x}_7_f_%T)I#tkNU%C=bbcT_I+J=7J9rXRxCrfX9%D2 zAa0~|MoBAjs7JX0Pf_=CRl5hYc8P1u6ZFwMYKXc#UeZ0DpV%Y8M*q4nH-*XB7lX0X z_5dR@TsP8T-w(R@p#4|SQ`|wisUew!5!mdM8&Fj%CE8=V${m?J?zIpRQn<$smh{lz zs%zcVT@nn)59%v&JK?X4=he}QiTu6N#;78P;yFP9C)-f;@jyhVmlG6{KMCW0$4$y(9N&19^Qe%6ZpEq4 zW`ybxk>A`AHv~XxDi3(`;A#RpIY={;l{g872MQ9OAOy{IWDdY0&B+1`)KPr&W2DyD zB22Lo1(Y(afS`d8lRZAHL}a89n(F_zX+k{EQfN#P>zJF*)tLMxXLfl*U!)ipj_W1- zWGXE)*`{VCoADDBO%&C7vyJx$*6c^u><_NlA6m0Nyk`Hzn*EVA`!7XwAc6HClL^>f z?vZ7-hZ$81!x_UD(6K&oR8zUlEV%#$bBjQyEU>T?1_u!Qo3C)Q_+3m8!zudm8MqZQ zqJ#o2m(hQ2%B^-7O|e&g@!gFc7Rot%QjOE*QryRbn)P z2%%oV3oCfR@sA_h0~Z3(uS?pMqn~HcJ;hQD#b6#-K+$8dqQps%D~OYj8$ZJdUu@(J zrd)DO9gjZ%uYuI)&}<(KoQ84^(&Ka30nx0W zN%?6qXAkwBv@?AJ;#F>U^bdwl+p=VLZXFP}6Lx0na035)UFFLDeCx~q0ncAc@&Et; literal 12096 zcmeHNOKcoRdag%zPtVklY*7?NJ#1BTW*u3vEkCkauf18bY*{kp2Y2O1)_GABMM)gK z#NkLA0gkD~E;d-e$sqv(1ThdD76}5_h?ATGs`3ueQ1Q1|Q6PL#P8vFRWgR=gzNnd!pv+z3$xnf@tWgJtd{$Qc`Lm zw3LxXi4Ht*B8ArVgb#aKrse<3F~g|h}l%tEtxU$Bg-&V;oZi_SKE6bIT{!*18*7CD-P}{n9IsyR&EA>$B4*bu@(LBPXhMJk0Tdj)VY@Jz4?OJitIlI&$iT88--0 zHy(QWu}8T=W6#U4xL2m18SFEIeXj<%W;Ou#>f@X`Gzd2R$O-lh5B8l3Q%6Qt7ruFF zd2Ox-y1L!D>*9=ASy)-?UVmtDb+IR2EL#`4YgfceL&aEk;mX2XPs|J#?fJEpD|6ii z@wIq%76`?0yss>-inF!Z*{iFpyx~bd@707AR(8w~-fnE^sLGtYW)ieAZOXyA2RfmIDQi(xOHIa6k=1;eTH$dWRgu$f zb7S2!Fz8$B=4(=K0`k??ST3#18o5$addey*Pv_d|Xv)chR%OQNQ_rG-4Jh3oNtb0p z7^~b^2b1RjfQe0M@QnGTtF^4`W;L^iow8h%J@Zm=-3C{6;#61%M5SzCq?J#{Z~)bs zw}czznj?l-(p-7Es^M>!BuUVclKgDgJSyd8>t3vYwT~+Cd^Dw|+)d>^RBqfICN}UO zT?8Iny4(Q>ni7j2RZUNqd@xvQ8*?84fGve|$dUpxsAw#Tj%*lRB1_Gb z$J5#e#yq`~@>!tr()&H>?#0@`YTEn2O*R5<$MN11ZMOD58#`sPQFF{A0Doi{Rse>D zS43++ajI-@Yp;`?_FiKifGArwmtJuag3FavfFaL7JLXx;Wl&EBCr*ms)@cfz%4qtA z)UOSi)VH;4c+Le#p-nis9>o8ic5f*+Tv&uhn`?q-*PN+9ey0S{?uMGCDdiC$qHB2^ zTRoY$|G9PRmY%HH#MY({<%v6DlS@m0No?ezrE3m~>TTpPTB(yu7%^NUa{H%YFR{x8 z>;)9PT`mVHM0pxiR<|kSlG=K9(AYYv=*SL0>9obXVWT{;abB|xn_w|p>p0beS)4Nv zxq>2d1CRzl5?cqDu?>PH9?aHG0MORKu*U|n0RmzPRM^Qt+0e)%Y9yKtT03&b_ z%r;J_2!p@@oAO$cHu7NEer~RxM6wBsJZND~+>BuKZ)G8Rs(T03{9Q2)q9k`T&0P=Z z9}f*%MEnM z>Re)7h`s|v!92Mxgbq5e(I(37yhc>DLG$|8f=w?RVyJa&RJbfi>EB8z(Uz=)-^BFN z4pY=&hxORjCUs$l3AS?rJJjxo)v!Zu?{vTpVL62zrrr+IV2AbF?eM?*;-`htZPZ~t z4Jx8E9a0oz>x4X(*(q1>)?ag%~$*$4=T6qR;iF8g0C!S+0 zi>44?s03YvjV1Z@1UIV60*XRvD>fZb*H z;*HRCB(vsNIfj*dMuReqTN#GOm)aQ-f}l>88}ko1>TFVC{A-OuJxnc-MoA}64Y8$8 z4XLKao^rB1>O^}lkTqN5?R^ZU%Ol7KFmeC0xoqu2Y9hRB5u8sK5mmJJVOi|U)38~R zK13W?f2;#Ua|IHBV6K;CwS-3pCdXmz0Nu9>{w=sGyi5{GjID`Wfnd18_PCYp{Y<^u z`c} zh?)Oxr0xfD*?lBdOW|a#rChWiOV8NBR`%}GKag)e{gJrwCxGs>_h6b&VZ<5gV+gw! zJ*^Cbt*o_Y3GeCU0A}t5&92Fus~MxV)!7)+=CIEaLMHd2kAFYZ?jCZ%y_J2z{Ed<+ z46*X<*n#xz8tIn%Ut}1P*#hjrA;eu;>UEGxFcX8vI$|UEd4*sDA5!HT8ZGP;QwB`;g#ba!m;^KcVlb1o1CroYKyFVyl+uM172yVUU44 z) z zja42^f+rJQkGPjOQ}$9+zj5Gz=FobCy{A*Ttq67cW?w<#ciR|5pjo~V|8FLM7b-2LV1 z)zZ1*-cs8sc;XHeJh=k}H}`;tK(dcPdYyR^y$DE$ZgB<%!LU;AT|x`TA@iUR+;w0F z>MT<n>kd?gj#Q(xr=6z2{YmS9EAdw5p+wI zNBb#x9DyazfEMpK58HxH=Yj5!BVz5q)dxWun45Pkfl;&lrgz z66CrdE}q0?9drL0gMAcQ5n3Vr@p+GT!|=B=1rn@wzZT4+(HT-^q#)>JCKCB6AxG3< z!ly4&(Br2fJKKc~oQt+|f@2AInbZis7{3G6C9Qz+pn-+$)IylMV8n6Y1>}-Q6Zm1s z;$Vw}!ug{q@;0i3N&kbENx2_vX2+T3Bjb>hIP2k)A`altVo6`Mpd8Ecwkw1{}3JKZ_D2X|B(dY*4L_QxY0rS<1cqYOHH{?B6l-(qwe7{C1=)z(<(CKG<+v|{*YBY zs1~0op>x@T(S)x^xcRl|^r1-{{s4*A^SEiCbtc(U{$dzc2S~JSw1h(sj$h$E&z})- z=gYGrUbv^5!le?gT2oUUo||S=P>xPv+_9EDT^@*@;eiMO$9E}O@QsyHxJhZLNV{-Ckb8Of^0u@H|~Bp`d;`R%x6CdhK1_?iE#f)f4a0)EL|7qIvPzA>)?2QON2GkYeQ(zp)C!5xPzP?NO| zdV%0gVeT-p<1H?*nJ0m@B_<`8gprOJd`{;Zd)2?*PyFjcTJRXS3}gOf#ynTp5tH;2 zbWmgP1%UMDd^Cz%gE(0EOl1EOVHM{u3$-v6F-pWuf-8ku<= z^2gT=i(8?#%`OHW_H6&k->}shwt;* z@ky=+1BdT}ouGU;Y!oyMzG?()xM}%AiMuXOYFd)|G^0E_ON97rxdq{AkMKEPPGd)H zk0mz}#F8(ESVC?QIwt9ck5A%jA3`?Vu0%9IE|CElN+3heG>MBq96n}P8=2|dnC(+m zFDb(^KmkfGdDd@ZlmC@ut3qtJsmUVh!^;*ISG$8fG6*&)cEkk^k^~JB7XqB zP~tQHS>MP19cd32`-?A$UxHs(EQky2;Nu?H3Z&7O;z!`>aX-Sv=vS&{7(I%%6U+Ep z6Z2wD^u!`+tHPqThChpuIV^Sw%lXH>CAVX-7Nz z%M$Jg|MzRB2Oes-k+*QIdOQ7X;Ft!z7eL={fZ8>26|3=m5oH&&ul8x@dhSQcJp91G z$`W;wvX%bZXokbwjjFfxcB<~(hVMA2T80!Z?j#LR^}!BU$XlPPp13Zqc%@Sx$$()W!5XexqvmOzYXzC)VpXc20L;e$DhV$f35Sdh>Q3mhAmok?s|*%S3uJ${t7zW2RmTlj^2ueQnQ#9xVjAoG>88s{g&K=X%;^|)|cB0hc1QRx8Pg+ lyJ*XLXiHhV4}`ZuKc9B_#yFo+h~EbuK5fABvAz`I{{V%+m{I@$ diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index b105c1038df01f7ed7131609a0cb046f0d3d536e..13ca03ba984d8339fcefe53560826cbe7f81d450 100644 GIT binary patch delta 3660 zcmb7HU2Ggj9iN%qy}i4+v&T7K?6ZCL?Cs^Fwi6o1ahirUH;HqOlQgDj3A9acjN_!S z9Vc-vE>Q*R(nu842bXzDUmAo|kZ7R~4`%>KVW*UMk~_G3%Bld+Rd6h%CWL45coJL%#odTnGs_uUA+5Bj6%Twouj>d zV~59%IxMj;F+XwY6x)@qZ^q}RPCJf&>U`a(FK5q8)sDp|)ys2}Y`1L^AMe=XjgQYw zy}$+lFPxoYd;Rh8%X75bml_|RJU=@-HCbcBa(sNgRy#ZX^@&SUj<%sKolBR`v1d|PpQ=sN&Q7vtGn3Cx%$=D!JT-Tw_B?yepPZPTCDo3vJ9qxn+0$35 zv*#yj+Xu}2{KOS@BFUdh`J4>ryD~hN{=t^xcGfMH(oD0>B5A~e+{QF-9LC&=sF+*K zT<7+5zQ5=NjuaKAqJ?%21g>`JJ)vu%5_a4Aoc(RSttq)mc8i;T*uUnt6qEmjFhzu^ z6g1F$NGSWd+vR6)U@B{W<%ZGzur1)4tL8wg$mSz~qaC+mcn1V4<5c(Kz|68^-rziO#3V zTn8i$#O6pDm6a6`LR34%$KfdP{ccn@(sI)cBR$P!xm^Og6^I4E^==e)?Dve2s?A+f#WH-_LA~}@TutpenT6=Y$PnU!$S~oTJ z#FA$|XgG|l*V=)XxK0qZSc5IK3u-a1ijC{QCwacfjID~io+^^aU#DIm@JRaMmTvHp zsz*zxED?%sdnLVtciEq%4-(41(?B+GJ)FQjTVRnkaQ>r`%-|*#Q#qXtpaVQWmH{ zcEZ!}yjy9OVHa#rAt0PzRvTn*~bu2O+p}r`1L&|17u@iAwz! z=E;4ARkM&`cr{BWQO$}B)vV#=yop$OJ-D@mg>sw^v(1v>9a1LXVLK9@#Yur&8d*sS zR&Iw}rTGZFNV=~x-~k0%r@`n+N-8h`3TWdRqt~&Bm>s1hl@C)L#6Nm~fcu!QGG5Cv z>Q3x7r>0%}3m{#_fTrO(qTR z7s7(d#A_C+=V1erDD5fE?cJu%;mtDv3-fR)8PO5u-ZsDIZ+~m=M{My&W-&QkZpAIx zZ`i>slb{3+UWB=@bp~*B7ASV2d3)=kgTgR>a7>ZJqdzg#Yk%ClK$)S{Hwe70KISF+ zQj4a;4_o?p(Z1J`Z>5~^RDfdFj^Wg|P(W&3JN`;Lic(&rZpBp}B1UbvpIReQDn4v! zTv5HyZM{CvtP3J&^QmK+>duJE4@C(2t(0Jn%(43t^9#s0*=W%jc_!|V=JwsYcb$5( zhkeVAxhhOg-9GXF-l&J9QJPJwhmAW!IR#C(VP%^XT6EYMcBnR_woskZWdNiVsc#U; zI}-ZHBli2c^bouSC!>*U78x}_7_f_%T)I#tkNU%C=bbcT_I+J=7J9rXRxCrfX9%D2 zAa0~|MoBAjs7JX0Pf_=CRl5hYc8P1u6ZFwMYKXc#UeZ0DpV%Y8M*q4nH-*XB7lX0X z_5dR@TsP8T-w(R@p#4|SQ`|wisUew!5!mdM8&Fj%CE8=V${m?J?zIpRQn<$smh{lz zs%zcVT@nn)59%v&JK?X4=he}QiTu6N#;78P;yFP9C)-f;@jyhVmlG6{KMCW0$4$y(9N&19^Qe%6ZpEq4 zW`ybxk>A`AHv~XxDi3(`;A#RpIY={;l{g872MQ9OAOy{IWDdY0&B+1`)KPr&W2DyD zB22Lo1(Y(afS`d8lRZAHL}a89n(F_zX+k{EQfN#P>zJF*)tLMxXLfl*U!)ipj_W1- zWGXE)*`{VCoADDBO%&C7vyJx$*6c^u><_NlA6m0Nyk`Hzn*EVA`!7XwAc6HClL^>f z?vZ7-hZ$81!x_UD(6K&oR8zUlEV%#$bBjQyEU>T?1_u!Qo3C)Q_+3m8!zudm8MqZQ zqJ#o2m(hQ2%B^-7O|e&g@!gFc7Rot%QjOE*QryRbn)P z2%%oV3oCfR@sA_h0~Z3(uS?pMqn~HcJ;hQD#b6#-K+$8dqQps%D~OYj8$ZJdUu@(J zrd)DO9gjZ%uYuI)&}<(KoQ84^(&Ka30nx0W zN%?6qXAkwBv@?AJ;#F>U^bdwl+p=VLZXFP}6Lx0na035)UFFLDeCx~q0ncAc@&Et; literal 12096 zcmeHNOKcoRdag%zPtVklY*7?NJ#1BTW*u3vEkCkauf18bY*{kp2Y2O1)_GABMM)gK z#NkLA0gkD~E;d-e$sqv(1ThdD76}5_h?ATGs`3ueQ1Q1|Q6PL#P8vFRWgR=gzNnd!pv+z3$xnf@tWgJtd{$Qc`Lm zw3LxXi4Ht*B8ArVgb#aKrse<3F~g|h}l%tEtxU$Bg-&V;oZi_SKE6bIT{!*18*7CD-P}{n9IsyR&EA>$B4*bu@(LBPXhMJk0Tdj)VY@Jz4?OJitIlI&$iT88--0 zHy(QWu}8T=W6#U4xL2m18SFEIeXj<%W;Ou#>f@X`Gzd2R$O-lh5B8l3Q%6Qt7ruFF zd2Ox-y1L!D>*9=ASy)-?UVmtDb+IR2EL#`4YgfceL&aEk;mX2XPs|J#?fJEpD|6ii z@wIq%76`?0yss>-inF!Z*{iFpyx~bd@707AR(8w~-fnE^sLGtYW)ieAZOXyA2RfmIDQi(xOHIa6k=1;eTH$dWRgu$f zb7S2!Fz8$B=4(=K0`k??ST3#18o5$addey*Pv_d|Xv)chR%OQNQ_rG-4Jh3oNtb0p z7^~b^2b1RjfQe0M@QnGTtF^4`W;L^iow8h%J@Zm=-3C{6;#61%M5SzCq?J#{Z~)bs zw}czznj?l-(p-7Es^M>!BuUVclKgDgJSyd8>t3vYwT~+Cd^Dw|+)d>^RBqfICN}UO zT?8Iny4(Q>ni7j2RZUNqd@xvQ8*?84fGve|$dUpxsAw#Tj%*lRB1_Gb z$J5#e#yq`~@>!tr()&H>?#0@`YTEn2O*R5<$MN11ZMOD58#`sPQFF{A0Doi{Rse>D zS43++ajI-@Yp;`?_FiKifGArwmtJuag3FavfFaL7JLXx;Wl&EBCr*ms)@cfz%4qtA z)UOSi)VH;4c+Le#p-nis9>o8ic5f*+Tv&uhn`?q-*PN+9ey0S{?uMGCDdiC$qHB2^ zTRoY$|G9PRmY%HH#MY({<%v6DlS@m0No?ezrE3m~>TTpPTB(yu7%^NUa{H%YFR{x8 z>;)9PT`mVHM0pxiR<|kSlG=K9(AYYv=*SL0>9obXVWT{;abB|xn_w|p>p0beS)4Nv zxq>2d1CRzl5?cqDu?>PH9?aHG0MORKu*U|n0RmzPRM^Qt+0e)%Y9yKtT03&b_ z%r;J_2!p@@oAO$cHu7NEer~RxM6wBsJZND~+>BuKZ)G8Rs(T03{9Q2)q9k`T&0P=Z z9}f*%MEnM z>Re)7h`s|v!92Mxgbq5e(I(37yhc>DLG$|8f=w?RVyJa&RJbfi>EB8z(Uz=)-^BFN z4pY=&hxORjCUs$l3AS?rJJjxo)v!Zu?{vTpVL62zrrr+IV2AbF?eM?*;-`htZPZ~t z4Jx8E9a0oz>x4X(*(q1>)?ag%~$*$4=T6qR;iF8g0C!S+0 zi>44?s03YvjV1Z@1UIV60*XRvD>fZb*H z;*HRCB(vsNIfj*dMuReqTN#GOm)aQ-f}l>88}ko1>TFVC{A-OuJxnc-MoA}64Y8$8 z4XLKao^rB1>O^}lkTqN5?R^ZU%Ol7KFmeC0xoqu2Y9hRB5u8sK5mmJJVOi|U)38~R zK13W?f2;#Ua|IHBV6K;CwS-3pCdXmz0Nu9>{w=sGyi5{GjID`Wfnd18_PCYp{Y<^u z`c} zh?)Oxr0xfD*?lBdOW|a#rChWiOV8NBR`%}GKag)e{gJrwCxGs>_h6b&VZ<5gV+gw! zJ*^Cbt*o_Y3GeCU0A}t5&92Fus~MxV)!7)+=CIEaLMHd2kAFYZ?jCZ%y_J2z{Ed<+ z46*X<*n#xz8tIn%Ut}1P*#hjrA;eu;>UEGxFcX8vI$|UEd4*sDA5!HT8ZGP;QwB`;g#ba!m;^KcVlb1o1CroYKyFVyl+uM172yVUU44 z) z zja42^f+rJQkGPjOQ}$9+zj5Gz=FobCy{A*Ttq67cW?w<#ciR|5pjo~V|8FLM7b-2LV1 z)zZ1*-cs8sc;XHeJh=k}H}`;tK(dcPdYyR^y$DE$ZgB<%!LU;AT|x`TA@iUR+;w0F z>MT<n>kd?gj#Q(xr=6z2{YmS9EAdw5p+wI zNBb#x9DyazfEMpK58HxH=Yj5!BVz5q)dxWun45Pkfl;&lrgz z66CrdE}q0?9drL0gMAcQ5n3Vr@p+GT!|=B=1rn@wzZT4+(HT-^q#)>JCKCB6AxG3< z!ly4&(Br2fJKKc~oQt+|f@2AInbZis7{3G6C9Qz+pn-+$)IylMV8n6Y1>}-Q6Zm1s z;$Vw}!ug{q@;0i3N&kbENx2_vX2+T3Bjb>hIP2k)A`altVo6`Mpd8Ecwkw1{}3JKZ_D2X|B(dY*4L_QxY0rS<1cqYOHH{?B6l-(qwe7{C1=)z(<(CKG<+v|{*YBY zs1~0op>x@T(S)x^xcRl|^r1-{{s4*A^SEiCbtc(U{$dzc2S~JSw1h(sj$h$E&z})- z=gYGrUbv^5!le?gT2oUUo||S=P>xPv+_9EDT^@*@;eiMO$9E}O@QsyHxJhZLNV{-Ckb8Of^0u@H|~Bp`d;`R%x6CdhK1_?iE#f)f4a0)EL|7qIvPzA>)?2QON2GkYeQ(zp)C!5xPzP?NO| zdV%0gVeT-p<1H?*nJ0m@B_<`8gprOJd`{;Zd)2?*PyFjcTJRXS3}gOf#ynTp5tH;2 zbWmgP1%UMDd^Cz%gE(0EOl1EOVHM{u3$-v6F-pWuf-8ku<= z^2gT=i(8?#%`OHW_H6&k->}shwt;* z@ky=+1BdT}ouGU;Y!oyMzG?()xM}%AiMuXOYFd)|G^0E_ON97rxdq{AkMKEPPGd)H zk0mz}#F8(ESVC?QIwt9ck5A%jA3`?Vu0%9IE|CElN+3heG>MBq96n}P8=2|dnC(+m zFDb(^KmkfGdDd@ZlmC@ut3qtJsmUVh!^;*ISG$8fG6*&)cEkk^k^~JB7XqB zP~tQHS>MP19cd32`-?A$UxHs(EQky2;Nu?H3Z&7O;z!`>aX-Sv=vS&{7(I%%6U+Ep z6Z2wD^u!`+tHPqThChpuIV^Sw%lXH>CAVX-7Nz z%M$Jg|MzRB2Oes-k+*QIdOQ7X;Ft!z7eL={fZ8>26|3=m5oH&&ul8x@dhSQcJp91G z$`W;wvX%bZXokbwjjFfxcB<~(hVMA2T80!Z?j#LR^}!BU$XlPPp13Zqc%@Sx$$()W!5XexqvmOzYXzC)VpXc20L;e$DhV$f35Sdh>Q3mhAmok?s|*%S3uJ${t7zW2RmTlj^2ueQnQ#9xVjAoG>88s{g&K=X%;^|)|cB0hc1QRx8Pg+ lyJ*XLXiHhV4}`ZuKc9B_#yFo+h~EbuK5fABvAz`I{{V%+m{I@$ diff --git a/lib/loader/tests/index.html b/lib/loader/tests/index.html index 68a98e4c22..8f3d7cc3fc 100644 --- a/lib/loader/tests/index.html +++ b/lib/loader/tests/index.html @@ -7,37 +7,37 @@ (async () => { var module; - module = await exports.instantiate(fetch("./build/untouched.wasm")); + module = await exports.instantiate(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate(await fetch("./build/untouched.wasm")); + module = await exports.instantiate(await fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate((await fetch("./build/untouched.wasm")).arrayBuffer()); + module = await exports.instantiate((await fetch("./build/debug.wasm")).arrayBuffer()); assert(module.memory); - module = await exports.instantiate(await (await fetch("./build/untouched.wasm")).arrayBuffer()); + module = await exports.instantiate(await (await fetch("./build/debug.wasm")).arrayBuffer()); assert(module.memory); - module = await exports.instantiateStreaming(fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(await fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(await fetch("./build/debug.wasm")); assert(module.memory); var instantiateStreaming = WebAssembly.instantiateStreaming; delete WebAssembly.instantiateStreaming; - module = await exports.instantiate(fetch("./build/untouched.wasm")); + module = await exports.instantiate(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate(await fetch("./build/untouched.wasm")); + module = await exports.instantiate(await fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(await fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(await fetch("./build/debug.wasm")); assert(module.memory); WebAssembly.instantiateStreaming = instantiateStreaming; diff --git a/lib/loader/tests/index.js b/lib/loader/tests/index.js index db158ef2b3..26c53791c7 100644 --- a/lib/loader/tests/index.js +++ b/lib/loader/tests/index.js @@ -23,7 +23,9 @@ function test(file) { // should export memory assert(exports.memory instanceof WebAssembly.Memory); - assert(typeof exports.memory.compare === "function"); + + // NOTE: Namespace exports have been removed in 0.20 + // assert(typeof exports.memory.compare === "function"); // should be able to get an exported string assert.strictEqual(exports.__getString(exports.COLOR), "red"); @@ -251,15 +253,16 @@ function test(file) { // ref = module.newFunction(module.varadd); // assert.strictEqual(module.calladd(ref, 2, 3), 5); + // NOTE: Class exports have been removed in 0.20 // should be able to use a class - var car = new exports.Car(5); - assert.strictEqual(car.numDoors, 5); - assert.strictEqual(car.isDoorsOpen, 0); - car.openDoors(); - assert.strictEqual(car.isDoorsOpen, 1); - car.closeDoors(); - assert.strictEqual(car.isDoorsOpen, 0); - assert(typeof +car === "number"); // uses Car.prototype.valueOf to obtain `thisPtr` + // var car = new exports.Car(5); + // assert.strictEqual(car.numDoors, 5); + // assert.strictEqual(car.isDoorsOpen, 0); + // car.openDoors(); + // assert.strictEqual(car.isDoorsOpen, 1); + // car.closeDoors(); + // assert.strictEqual(car.isDoorsOpen, 0); + // assert(typeof +car === "number"); // uses Car.prototype.valueOf to obtain `thisPtr` // should be able to return a function { diff --git a/lib/parse/README.md b/lib/parse/README.md deleted file mode 100644 index 2864308a11..0000000000 --- a/lib/parse/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# WebAssembly Parser - -A WebAssembly binary parser in WebAssembly. Super small, super fast, with TypeScript support. - -API ---- - -* **parse**(binary: `Uint8Array`, options?: `ParseOptions`): `void`
- Parses the contents of a WebAssembly binary according to the specified options. - -* **ParseOptions**
- Options specified to the parser. The `onSection` callback determines the sections being evaluated in detail. - - * **onSection**?(id: `SectionId`, payloadOff: `number`, payloadLen: `number`, nameOff: `number`, nameLen: `number`): `boolean`
- Called with each section in the binary. Returning `true` evaluates the section. - - * **onType**?(index: `number`, form: `number`): `void`
- Called with each function type if the type section is evaluated. - - * **onTypeParam**?(index: `number`, paramIndex: `number`, paramType: `Type`): `void`
- Called with each function parameter if the type section is evaluated. - - * **onTypeReturn**?(index: `number`, returnIndex: `number`, returnType: `Type`): `void`
- Called with each function return type if the type section is evaluated. - - * **onImport**?(index: `number`, kind: `ExternalKind`, moduleOff: `number`, moduleLen: `number`, fieldOff: `number`, fieldLen: `number`): `void`
- Called with each import if the import section is evaluated. - - * **onFunctionImport**?(index: `number`, type: `number`): `void`
- Called with each function import if the import section is evaluated. - - * **onTableImport**?(index: `number`, type: `Type`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each table import if the import section is evaluated. - - * **onMemoryImport**?(index: `number`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each memory import if the import section is evaluated. - - * **onGlobalImport**?(index: `number`, type: `Type`, mutability: `number`): `void`
- Called with each global import if the import section is evaluated. - - * **onMemory**?(index: `number`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each memory if the memory section is evaluated. - - * **onFunction**?(index: `number`, typeIndex: `number`): `void`
- Called with each function if the function section is evaluated. - - * **onGlobal**?(index: `number`, type: `Type`, mutability: `number`): `void`
- Called with each global if the global section is evaluated. - - * **onStart**?(index: `number`): `void`
- Called with the start function index if the start section is evaluated. - - * **onExport**?(index: `number`, kind: `ExternalKind`, kindIndex: `number`, nameOff: `number`, nameLen: `number`): `void`
- Called with each export if the export section is evaluated. - - * **onSourceMappingURL**?(offset: `number`, length: `number`): `void`
- Called with the source map URL if the 'sourceMappingURL' section is evaluated. - - * **onModuleName**?(offset: `number`, length: `number`): `void`
- Called with the module name if present and the 'name' section is evaluated. - - * **onFunctionName**?(index: `number`, offset: `number`, length: `number`): `void`
- Called with each function name if present and the 'name' section is evaluated. - - * **onLocalName**?(funcIndex: `number`, index: `number`, offset: `number`, length: `number`): `void`
- Called with each local name if present and the 'name' section is evaluated. - -* **Type**
- A value or element type, depending on context. - - | Name | Value - |---------|------- - | i32 | 0x7f - | i64 | 0x7e - | f32 | 0x7d - | f64 | 0x7c - | anyfunc | 0x70 - | func | 0x60 - | none | 0x40 - -* **SectionId**
- Numerical id of the current section. - - | Name | Value - |----------|------- - | Custom | 0 - | Type | 1 - | Import | 2 - | Function | 3 - | Table | 4 - | Memory | 5 - | Global | 6 - | Export | 7 - | Start | 8 - | Element | 9 - | Code | 10 - | Data | 11 - -* **ExternalKind**
- Kind of an export or import. - - | Name | Value - |----------|------- - | Function | 0 - | Table | 1 - | Memory | 2 - | Global | 3 diff --git a/lib/parse/assembly/index.ts b/lib/parse/assembly/index.ts deleted file mode 100644 index 3defa2ec19..0000000000 --- a/lib/parse/assembly/index.ts +++ /dev/null @@ -1,406 +0,0 @@ -/** A WebAssembly module that parses WebAssembly modules. */ - -// Common constants shared between AssemblyScript and TypeScript -import { - SectionId, - ExternalKind, - NameType, - MAX_PAGES, - MAX_ELEMS, - Opcode -} from "../src/common"; - -import * as opt from "./options"; - -/** Current offset in memory. */ -var off: usize = 0; - -/** Reads an unsigned integer from memory. */ -function readUint(): u32 { - var pos = off; - var val = load(pos); - off = pos + sizeof(); - return val; -} - -/** Reads an unsigned 64-bit integer from memory. */ -function readUint64(): u64 { - var pos = off; - var val = load(pos); - off = pos + 8; - return val; -} - -/** Reads a LEB128-encoded unsigned integer from memory. */ -function readVaruint(size: u32): u32 { - var val: u32 = 0; - var shl: u32 = 0; - var byt: u32; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - if (!(byt & 0x80)) break; - shl += 7; - } while (true); - off = pos; - return val; -} - -/** Reads a LEB128-encoded signed integer from memory. */ -function readVarint(size: u32): i32 { - var val: u32 = 0; - var shl: u32 = 0; - var byt: u32; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - shl += 7; - } while (byt & 0x80); - off = pos; - return select(val | (~0 << shl), val, shl < size && (byt & 0x40) != 0); -} - -/** Reads a LEB128-encoded signed 64-bit integer from memory. */ -function readVarint64(): i64 { - var val: u64 = 0; - var shl: u64 = 0; - var byt: u64; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - shl += 7; - } while (byt & 0x80); - off = pos; - return select(val | (~0 << shl), val, shl < 64 && (byt & 0x40) != 0); -} - -function skipInitExpr(): void { - var op = readUint(); - switch (op) { - case Opcode.i32_const: { - readVarint(32); - break; - } - case Opcode.i64_const: { - readVarint64(); - break; - } - case Opcode.f32_const: { - readUint(); - break; - } - case Opcode.f64_const: { - readUint64(); - break; - } - case Opcode.get_global: { - readVaruint(32); - break; - } - default: unreachable(); // MVP - } - if (readUint() != Opcode.end) unreachable(); -} - -/** Starts parsing the module that has been placed in memory. */ -export function parse(begin: usize, end: usize): void { - off = begin; - var magic = readUint(); - if (magic != 0x6D736100) unreachable(); - var version = readUint(); - if (version != 1) unreachable(); - var fun_space_index: u32 = 0; - var glo_space_index: u32 = 0; - var mem_space_index: u32 = 0; - var tbl_space_index: u32 = 0; - while (off < end) { - // let section_off = off; - let id = readVaruint(7); - let payload_len = readVaruint(32); - let name_off = 0; - let name_len = 0; - if (!id) { - let before = off; - name_len = readVaruint(32); - name_off = off; - off += name_len; - payload_len -= off - before; - } else if (id > SectionId.Data) unreachable(); - let payload_off = off; - if (opt.onSection( - id, - payload_off, - payload_len, - name_off, - name_len - )) { - switch (id) { - case SectionId.Type: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let form = readVarint(7) & 0x7f; - opt.onType( - index, - form - ); - let paramCount = readVaruint(32); - for (let paramIndex: u32 = 0; paramIndex < paramCount; ++paramIndex) { - let paramType = readVarint(7) & 0x7f; - opt.onTypeParam( - index, - paramIndex, - paramType - ); - } - let returnCount = readVaruint(1); // MVP - for (let returnIndex: u32 = 0; returnIndex < returnCount; ++returnIndex) { - let returnType = readVarint(7) & 0x7f; - opt.onTypeReturn( - index, - returnIndex, - returnType - ); - } - } - break; - } - case SectionId.Import: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let module_len = readVaruint(32); - let module_off = off; - off += module_len; - let field_len = readVaruint(32); - let field_off = off; - off += field_len; - let kind = readUint(); - opt.onImport( - index, - kind, - module_off, - module_len, - field_off, - field_len - ); - switch (kind) { - case ExternalKind.Function: { - let type = readVaruint(32); - opt.onFunctionImport( - fun_space_index++, - type - ); - break; - } - case ExternalKind.Table: { - let type = readVarint(7) & 0x7f; - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_ELEMS; - opt.onTableImport( - tbl_space_index++, - type, - initial, - maximum, - flags - ); - break; - } - case ExternalKind.Memory: { - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_PAGES; - opt.onMemoryImport( - mem_space_index++, - initial, - maximum, - flags - ); - break; - } - case ExternalKind.Global: { - let type = readVarint(7) & 0x7f; - let mutability = readVaruint(1); - opt.onGlobalImport( - glo_space_index++, - type, - mutability - ); - break; - } - default: unreachable(); - } - } - break; - } - case SectionId.Function: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let typeIndex = readVaruint(32); - opt.onFunction( - fun_space_index++, - typeIndex - ); - } - break; - } - case SectionId.Table: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let type = readVaruint(7) & 0x7f; - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_ELEMS; - opt.onTable( - tbl_space_index++, - type, - initial, - maximum, - flags - ); - } - break; - } - case SectionId.Memory: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_PAGES; - opt.onMemory( - mem_space_index++, - initial, - maximum, - flags - ); - } - break; - } - case SectionId.Global: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let type = readVarint(7) & 0x7f; - let mutability = readVaruint(1); - skipInitExpr(); - opt.onGlobal( - glo_space_index++, - type, - mutability - ); - } - break; - } - case SectionId.Export: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let field_len = readVaruint(32); - let field_off = off; - off += field_len; - let kind = readUint(); - let kind_index = readVaruint(32); - opt.onExport( - index, - kind, - kind_index, - field_off, - field_len - ); - } - break; - } - case SectionId.Start: { - let index = readVaruint(32); - opt.onStart( - index - ); - break; - } - case SectionId.Custom: { - if ( - name_len == 4 && - load(name_off) == 0x656D616E // "name" - ) { - let name_type = readVaruint(7); - let name_payload_len = readVaruint(32); - let name_payload_off = off; - switch (name_type) { - case NameType.Module: { - let module_name_len = readVaruint(32); - let module_name_off = off; - opt.onModuleName( - module_name_off, - module_name_len - ); - break; - } - case NameType.Function: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let fn_index = readVaruint(32); - let fn_name_len = readVaruint(32); - let fn_name_off = off; - off += fn_name_len; - opt.onFunctionName( - fn_index, - fn_name_off, - fn_name_len - ); - } - break; - } - case NameType.Local: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let fn_index = readVaruint(32); - let lc_count = readVaruint(32); - for (let j: u32 = 0; j < lc_count; ++j) { - let lc_index = readVaruint(32); - let lc_name_len = readVaruint(32); - let lc_name_off = off; - off += lc_name_len; - opt.onLocalName( - fn_index, - lc_index, - lc_name_off, - lc_name_len - ); - } - } - break; - } - default: unreachable(); - } - off = name_payload_off + name_payload_len; // ignore errors - break; - } else if ( - name_len == 16 && - load(name_off ) == 0x614D656372756F73 && // "sourceMa" - load(name_off + 8) == 0x4C5255676E697070 // "ppingURL" - ) { - let url_len = readVaruint(32); - let url_off = off; - off += url_len; - opt.onSourceMappingURL( - url_off, - url_len - ); - } - off = payload_off + payload_len; // ignore errors - break; - } - case SectionId.Element: - case SectionId.Code: - case SectionId.Data: { // skip - off += payload_len; - break; - } - default: unreachable(); - } - } else { // skip - off += payload_len; - } - } - if (off != end) unreachable(); -} diff --git a/lib/parse/assembly/options.ts b/lib/parse/assembly/options.ts deleted file mode 100644 index e4ca8ad219..0000000000 --- a/lib/parse/assembly/options.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Imported callbacks -export declare function onSection(id: u32, offset: u32, length: u32, nameOffset: u32, nameLength: u32): bool; -export declare function onType(index: u32, form: u32): void; -export declare function onTypeParam(index: u32, paramIndex: u32, paramType: u32): void; -export declare function onTypeReturn(index: u32, returnIndex: u32, returnType: u32): void; -export declare function onImport(index: u32, kind: u32, moduleOff: u32, moduleLen: u32, fieldOff: u32, fieldLen: u32): void; -export declare function onFunctionImport(index: u32, type: u32): void; -export declare function onTableImport(index: u32, type: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onMemoryImport(index: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onGlobalImport(index: u32, type: u32, mutability: u32): void; -export declare function onMemory(index: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onFunction(index: u32, typeIndex: u32): void; -export declare function onTable(index: u32, type: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onGlobal(index: u32, type: u32, mutability: u32): void; -export declare function onExport(index: u32, kind: u32, kindIndex: u32, nameOffset: u32, nameLength: u32): void; -export declare function onStart(index: u32): void; -export declare function onSourceMappingURL(offset: u32, length: u32): void; -export declare function onModuleName(offset: u32, length: u32): void; -export declare function onFunctionName(index: u32, offset: u32, length: u32): void; -export declare function onLocalName(funcIndex: u32, index: u32, offset: u32, length: u32): void; diff --git a/lib/parse/assembly/tsconfig.json b/lib/parse/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/lib/parse/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/lib/parse/build/.gitignore b/lib/parse/build/.gitignore deleted file mode 100644 index d873de2f78..0000000000 --- a/lib/parse/build/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.wasm -*.wasm.map diff --git a/lib/parse/build/index.wat b/lib/parse/build/index.wat deleted file mode 100644 index 73b58157fd..0000000000 --- a/lib/parse/build/index.wat +++ /dev/null @@ -1,932 +0,0 @@ -(module - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$viiiiii (func (param i32 i32 i32 i32 i32 i32))) - (type $FUNCSIG$viiiii (func (param i32 i32 i32 i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$i (func (result i32))) - (import "env" "memory" (memory $0 0)) - (import "options" "onSection" (func $assembly/options/onSection (param i32 i32 i32 i32 i32) (result i32))) - (import "options" "onType" (func $assembly/options/onType (param i32 i32))) - (import "options" "onTypeParam" (func $assembly/options/onTypeParam (param i32 i32 i32))) - (import "options" "onTypeReturn" (func $assembly/options/onTypeReturn (param i32 i32 i32))) - (import "options" "onImport" (func $assembly/options/onImport (param i32 i32 i32 i32 i32 i32))) - (import "options" "onFunctionImport" (func $assembly/options/onFunctionImport (param i32 i32))) - (import "options" "onTableImport" (func $assembly/options/onTableImport (param i32 i32 i32 i32 i32))) - (import "options" "onMemoryImport" (func $assembly/options/onMemoryImport (param i32 i32 i32 i32))) - (import "options" "onGlobalImport" (func $assembly/options/onGlobalImport (param i32 i32 i32))) - (import "options" "onFunction" (func $assembly/options/onFunction (param i32 i32))) - (import "options" "onTable" (func $assembly/options/onTable (param i32 i32 i32 i32 i32))) - (import "options" "onMemory" (func $assembly/options/onMemory (param i32 i32 i32 i32))) - (import "options" "onGlobal" (func $assembly/options/onGlobal (param i32 i32 i32))) - (import "options" "onExport" (func $assembly/options/onExport (param i32 i32 i32 i32 i32))) - (import "options" "onStart" (func $assembly/options/onStart (param i32))) - (import "options" "onModuleName" (func $assembly/options/onModuleName (param i32 i32))) - (import "options" "onFunctionName" (func $assembly/options/onFunctionName (param i32 i32 i32))) - (import "options" "onLocalName" (func $assembly/options/onLocalName (param i32 i32 i32 i32))) - (import "options" "onSourceMappingURL" (func $assembly/options/onSourceMappingURL (param i32 i32))) - (global $assembly/index/off (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "parse" (func $assembly/index/parse)) - (func $assembly/index/readVaruint (; 19 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $assembly/index/off - local.set $0 - loop $continue|0 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.load8_u - local.tee $1 - i32.const 127 - i32.and - local.get $3 - i32.shl - local.get $2 - i32.or - local.set $2 - local.get $1 - i32.const 128 - i32.and - if - local.get $3 - i32.const 7 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - global.set $assembly/index/off - local.get $2 - ) - (func $assembly/index/readVarint (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $assembly/index/off - local.set $4 - loop $continue|0 - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $3 - i32.load8_u - local.tee $3 - i32.const 127 - i32.and - local.get $1 - i32.shl - local.get $2 - i32.or - local.set $2 - local.get $1 - i32.const 7 - i32.add - local.set $1 - local.get $3 - i32.const 128 - i32.and - br_if $continue|0 - end - local.get $4 - global.set $assembly/index/off - i32.const -1 - local.get $1 - i32.shl - local.get $2 - i32.or - local.get $2 - local.get $3 - i32.const 64 - i32.and - i32.const 0 - i32.ne - i32.const 0 - local.get $1 - local.get $0 - i32.lt_u - select - select - ) - (func $assembly/index/readVarint64 (; 21 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - global.get $assembly/index/off - local.set $0 - loop $continue|0 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - i64.load8_u - local.tee $4 - i64.const 127 - i64.and - local.get $1 - i64.shl - local.get $3 - i64.or - local.set $3 - local.get $1 - i64.const 7 - i64.add - local.set $1 - local.get $4 - i64.const 128 - i64.and - i64.const 0 - i64.ne - br_if $continue|0 - end - local.get $0 - global.set $assembly/index/off - ) - (func $assembly/index/skipInitExpr (; 22 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - global.get $assembly/index/off - local.tee $1 - i32.load8_u - local.set $0 - local.get $1 - i32.const 1 - i32.add - global.set $assembly/index/off - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $0 - i32.const 65 - i32.ne - if - local.get $0 - i32.const 66 - i32.eq - br_if $case1|0 - local.get $0 - i32.const 67 - i32.eq - br_if $case2|0 - local.get $0 - i32.const 68 - i32.eq - br_if $case3|0 - local.get $0 - i32.const 35 - i32.eq - br_if $case4|0 - br $case5|0 - end - i32.const 32 - call $assembly/index/readVarint - drop - br $break|0 - end - call $assembly/index/readVarint64 - br $break|0 - end - global.get $assembly/index/off - local.tee $0 - i32.load - drop - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - br $break|0 - end - global.get $assembly/index/off - local.tee $0 - i64.load - drop - local.get $0 - i32.const 8 - i32.add - global.set $assembly/index/off - br $break|0 - end - call $assembly/index/readVaruint - drop - br $break|0 - end - unreachable - end - global.get $assembly/index/off - local.tee $1 - i32.load8_u - local.get $1 - i32.const 1 - i32.add - global.set $assembly/index/off - i32.const 11 - i32.ne - if - unreachable - end - ) - (func $assembly/index/parse (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $0 - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $0 - i32.load - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - i32.const 1836278016 - i32.ne - if - unreachable - end - global.get $assembly/index/off - local.tee $0 - i32.load - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - i32.const 1 - i32.ne - if - unreachable - end - i32.const 0 - local.set $0 - loop $continue|0 - global.get $assembly/index/off - local.get $1 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $4 - call $assembly/index/readVaruint - local.set $3 - i32.const 0 - local.set $5 - i32.const 0 - local.set $2 - local.get $4 - if - local.get $4 - i32.const 11 - i32.gt_u - if - unreachable - end - else - global.get $assembly/index/off - local.set $6 - call $assembly/index/readVaruint - local.tee $2 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - local.get $3 - global.get $assembly/index/off - local.get $6 - i32.sub - i32.sub - local.set $3 - end - local.get $4 - global.get $assembly/index/off - local.tee $6 - local.get $3 - local.get $5 - local.get $2 - call $assembly/options/onSection - if - block $break|1 - block $case12|1 - block $case11|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 - local.get $4 - i32.const 1 - i32.ne - if - local.get $4 - i32.const 2 - i32.eq - br_if $case1|1 - block $tablify|0 - local.get $4 - br_table $case8|1 $tablify|0 $tablify|0 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case11|1 $case11|1 $case11|1 $tablify|0 - end - br $case12|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $2 - loop $loop|2 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onType - call $assembly/index/readVaruint - local.set $5 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - local.get $5 - i32.lt_u - if - local.get $2 - local.get $3 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onTypeParam - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|3 - end - end - call $assembly/index/readVaruint - local.set $5 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - local.get $5 - i32.lt_u - if - local.get $2 - local.get $3 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onTypeReturn - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|4 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $7 - i32.const 0 - local.set $4 - loop $loop|5 - local.get $4 - local.get $7 - i32.lt_u - if - call $assembly/index/readVaruint - local.tee $3 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - call $assembly/index/readVaruint - local.tee $6 - global.get $assembly/index/off - local.tee $8 - i32.add - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $9 - i32.load8_u - local.set $2 - local.get $9 - i32.const 1 - i32.add - global.set $assembly/index/off - local.get $4 - local.get $2 - local.get $5 - local.get $3 - local.get $8 - local.get $6 - call $assembly/options/onImport - block $break|6 - block $case4|6 - block $case3|6 - block $case2|6 - block $case1|6 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|6 $case2|6 $case3|6 $case4|6 - end - local.get $10 - local.tee $2 - i32.const 1 - i32.add - local.set $10 - local.get $2 - call $assembly/index/readVaruint - call $assembly/options/onFunctionImport - br $break|6 - end - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - local.set $3 - call $assembly/index/readVaruint - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - call $assembly/index/readVaruint - local.get $5 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const -1 - end - local.get $5 - call $assembly/options/onTableImport - br $break|6 - end - call $assembly/index/readVaruint - local.set $3 - local.get $11 - local.tee $2 - i32.const 1 - i32.add - local.set $11 - local.get $2 - call $assembly/index/readVaruint - local.get $3 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const 65535 - end - local.get $3 - call $assembly/options/onMemoryImport - br $break|6 - end - local.get $12 - local.tee $2 - i32.const 1 - i32.add - local.set $12 - local.get $2 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/index/readVaruint - call $assembly/options/onGlobalImport - br $break|6 - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $loop|5 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $3 - loop $loop|7 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.tee $2 - i32.const 1 - i32.add - local.set $10 - local.get $2 - call $assembly/index/readVaruint - call $assembly/options/onFunction - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|7 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $7 - i32.const 0 - local.set $4 - loop $loop|8 - local.get $4 - local.get $7 - i32.lt_u - if - call $assembly/index/readVaruint - i32.const 127 - i32.and - local.set $3 - call $assembly/index/readVaruint - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - call $assembly/index/readVaruint - local.get $5 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const -1 - end - local.get $5 - call $assembly/options/onTable - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $loop|8 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $6 - i32.const 0 - local.set $3 - loop $loop|9 - local.get $3 - local.get $6 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $4 - local.get $11 - local.tee $2 - i32.const 1 - i32.add - local.set $11 - local.get $2 - call $assembly/index/readVaruint - local.get $4 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const 65535 - end - local.get $4 - call $assembly/options/onMemory - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|9 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $3 - loop $loop|10 - local.get $3 - local.get $4 - i32.lt_u - if - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - local.set $5 - call $assembly/index/readVaruint - local.set $6 - call $assembly/index/skipInitExpr - local.get $12 - local.tee $2 - i32.const 1 - i32.add - local.set $12 - local.get $2 - local.get $5 - local.get $6 - call $assembly/options/onGlobal - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|10 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $3 - i32.const 0 - local.set $2 - loop $loop|11 - local.get $2 - local.get $3 - i32.lt_u - if - call $assembly/index/readVaruint - local.tee $4 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $6 - i32.load8_u - local.set $7 - local.get $6 - i32.const 1 - i32.add - global.set $assembly/index/off - local.get $2 - local.get $7 - call $assembly/index/readVaruint - local.get $5 - local.get $4 - call $assembly/options/onExport - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|11 - end - end - br $break|1 - end - call $assembly/index/readVaruint - call $assembly/options/onStart - br $break|1 - end - local.get $2 - i32.const 4 - i32.eq - if (result i32) - local.get $5 - i32.load - i32.const 1701667182 - i32.eq - else - i32.const 0 - end - if - call $assembly/index/readVaruint - local.set $2 - call $assembly/index/readVaruint - global.get $assembly/index/off - block $break|12 - block $case3|12 - block $case2|12 - block $case1|12 - local.get $2 - if - local.get $2 - i32.const 1 - i32.eq - br_if $case1|12 - local.get $2 - i32.const 2 - i32.eq - br_if $case2|12 - br $case3|12 - end - call $assembly/index/readVaruint - local.set $2 - global.get $assembly/index/off - local.get $2 - call $assembly/options/onModuleName - br $break|12 - end - call $assembly/index/readVaruint - local.set $2 - i32.const 0 - local.set $3 - loop $loop|13 - local.get $3 - local.get $2 - i32.lt_u - if - call $assembly/index/readVaruint - call $assembly/index/readVaruint - local.tee $7 - global.get $assembly/index/off - local.tee $8 - i32.add - global.set $assembly/index/off - local.get $8 - local.get $7 - call $assembly/options/onFunctionName - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|13 - end - end - br $break|12 - end - call $assembly/index/readVaruint - local.set $6 - i32.const 0 - local.set $2 - loop $loop|14 - local.get $2 - local.get $6 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $7 - call $assembly/index/readVaruint - local.set $8 - i32.const 0 - local.set $3 - loop $loop|15 - local.get $3 - local.get $8 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $9 - call $assembly/index/readVaruint - local.tee $13 - global.get $assembly/index/off - local.tee $14 - i32.add - global.set $assembly/index/off - local.get $7 - local.get $9 - local.get $14 - local.get $13 - call $assembly/options/onLocalName - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|15 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|14 - end - end - br $break|12 - end - unreachable - end - i32.add - global.set $assembly/index/off - br $break|1 - else - local.get $2 - i32.const 16 - i32.eq - if (result i32) - local.get $5 - i64.load - i64.const 7011371672682196851 - i64.eq - else - i32.const 0 - end - if (result i32) - local.get $5 - i32.const 8 - i32.add - i64.load - i64.const 5499551997695193200 - i64.eq - else - i32.const 0 - end - if - call $assembly/index/readVaruint - local.tee $2 - global.get $assembly/index/off - local.tee $4 - i32.add - global.set $assembly/index/off - local.get $4 - local.get $2 - call $assembly/options/onSourceMappingURL - end - end - local.get $3 - local.get $6 - i32.add - global.set $assembly/index/off - br $break|1 - end - global.get $assembly/index/off - local.get $3 - i32.add - global.set $assembly/index/off - br $break|1 - end - unreachable - end - else - global.get $assembly/index/off - local.get $3 - i32.add - global.set $assembly/index/off - end - br $continue|0 - end - end - global.get $assembly/index/off - local.get $1 - i32.ne - if - unreachable - end - ) - (func $null (; 24 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/lib/parse/index.d.ts b/lib/parse/index.d.ts deleted file mode 100644 index 3bd16e178a..0000000000 --- a/lib/parse/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./src"; diff --git a/lib/parse/index.js b/lib/parse/index.js deleted file mode 100644 index 79b2952d67..0000000000 --- a/lib/parse/index.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.asparse=e():A.asparse=e()}("undefined"!=typeof self?self:this,function(){return function(A){var e={};function n(o){if(e[o])return e[o].exports;var Q=e[o]={i:o,l:!1,exports:{}};return A[o].call(Q.exports,Q,Q.exports,n),Q.l=!0,Q.exports}return n.m=A,n.c=e,n.d=function(A,e,o){n.o(A,e)||Object.defineProperty(A,e,{enumerable:!0,get:o})},n.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},n.t=function(A,e){if(1&e&&(A=n(A)),8&e)return A;if(4&e&&"object"==typeof A&&A&&A.__esModule)return A;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:A}),2&e&&"string"!=typeof A)for(var Q in A)n.d(o,Q,function(e){return A[e]}.bind(null,Q));return o},n.n=function(A){var e=A&&A.__esModule?function(){return A.default}:function(){return A};return n.d(e,"a",e),e},n.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},n.p="",n(n.s=0)}([function(A,e,n){A.exports=n(1)},function(A,e,n){"use strict";e.__esModule=!0;var o=n(2);e.Type=o.Type,e.SectionId=o.SectionId,e.ExternalKind=o.ExternalKind;var Q=null;e.parse=function A(e,n){n||(n={}),Q||(Q=new WebAssembly.Module(function(A){var e=A.length;if(e){for(var n=0,o=e;--o%4>1&&61===A.charCodeAt(o);)++n;e=Math.ceil(3*e)/4-n}for(var Q=new Uint8Array(e),B=0,I=0,E=0,r=0,i=A.length;r1)break;if(void 0===(C=t[C]))throw Error();switch(B){case 0:E=C,B=1;break;case 1:Q[I++]=E<<2|(48&C)>>4,E=C,B=2;break;case 2:Q[I++]=(15&E)<<4|(60&C)>>2,E=C,B=3;break;case 3:Q[I++]=(3&E)<<6|C,B=0}}if(1===B)throw Error();return Q}("AGFzbQEAAAABPQpgAn9/AGABfwF/YAV/f39/fwF/YAN/f38AYAZ/f39/f38AYAV/f39/fwBgBH9/f38AYAAAYAF/AGAAAX8CrgMUB29wdGlvbnMJb25TZWN0aW9uAAIHb3B0aW9ucwZvblR5cGUAAAdvcHRpb25zC29uVHlwZVBhcmFtAAMHb3B0aW9ucwxvblR5cGVSZXR1cm4AAwdvcHRpb25zCG9uSW1wb3J0AAQHb3B0aW9ucxBvbkZ1bmN0aW9uSW1wb3J0AAAHb3B0aW9ucw1vblRhYmxlSW1wb3J0AAUHb3B0aW9ucw5vbk1lbW9yeUltcG9ydAAGB29wdGlvbnMOb25HbG9iYWxJbXBvcnQAAwdvcHRpb25zCm9uRnVuY3Rpb24AAAdvcHRpb25zB29uVGFibGUABQdvcHRpb25zCG9uTWVtb3J5AAYHb3B0aW9ucwhvbkdsb2JhbAADB29wdGlvbnMIb25FeHBvcnQABQdvcHRpb25zB29uU3RhcnQACAdvcHRpb25zDG9uTW9kdWxlTmFtZQAAB29wdGlvbnMOb25GdW5jdGlvbk5hbWUAAwdvcHRpb25zC29uTG9jYWxOYW1lAAYHb3B0aW9ucxJvblNvdXJjZU1hcHBpbmdVUkwAAANlbnYGbWVtb3J5AgAAAwcGCQEHBwAHBgYBfwFBAAsHEgIGbWVtb3J5AgAFcGFyc2UAFwrlDAY/AQR/IwAhAANAIAAiAUEBaiEAIAEtAAAiAUH/AHEgA3QgAnIhAiABQYABcQRAIANBB2ohAwwBCwsgACQAIAILVgEEfyMAIQQDQCAEIgNBAWohBCADLQAAIgNB/wBxIAF0IAJyIQIgAUEHaiEBIANBgAFxDQALIAQkAEF/IAF0IAJyIAIgA0HAAHFBAEdBACABIABJGxsLPwICfwN+IwAhAANAIAAiAUEBaiEAIAExAAAiBEL/AIMgAoYgA4QhAyACQgd8IQIgBEKAAYNCAFINAAsgACQAC5wBAQJ/IwAiAS0AACEAIAFBAWokAAJAAkACQAJAAkACQCAAQcEARwRAIABBwgBGDQEgAEHDAEYNAiAAQcQARg0DIABBI0YNBAwFC0EgEBQaDAULEBUMBAsjACIAKAIAGiAAQQRqJAAMAwsjACIAKQMAGiAAQQhqJAAMAgsQExoMAQsACyMAIgEtAAAhACABQQFqJAAgAEELRwRAAAsL6QkBDX8gACQAIwAiACgCACECIABBBGokACACQYDCzesGRwRAAAsjACIAKAIAIQIgAEEEaiQAIAJBAUcEQAALQQAhAANAIwAgAUkEQBATIQQQEyEDQQAhBUEAIQIgBARAIARBC0sEQAALBSMAIQYQEyICIwAiBWokACADIwAgBmtrIQMLIAQjACIGIAMgBSACEAAEQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEEBRwRAIARBAkYNAQJAIAQODAkAAAMEBQYHCAoKCgALDAoLEBMhBEEAIQIDQCACIARJBEAgAkEHEBRB/wBxEAEQEyEFQQAhAwNAIAMgBUkEQCACIANBBxAUQf8AcRACIANBAWohAwwBCwsQEyEFQQAhAwNAIAMgBUkEQCACIANBBxAUQf8AcRADIANBAWohAwwBCwsgAkEBaiECDAELCwwKCxATIQdBACEEA0AgBCAHSQRAEBMiAyMAIgVqJAAQEyIGIwAiCGokACMAIgktAAAhAiAJQQFqJAAgBCACIAUgAyAIIAYQBAJAAkACQAJAAkAgAgRAIAJBAWsOAwECAwQLIAoiAkEBaiEKIAIQExAFDAQLQQcQFEH/AHEhAxATIQUgACICQQFqIQAgAiADEBMgBUEBcQR/EBMFQX8LIAUQBgwDCxATIQMgCyICQQFqIQsgAhATIANBAXEEfxATBUH//wMLIAMQBwwCCyAMIgJBAWohDCACQQcQFEH/AHEQExAIDAELAAsgBEEBaiEEDAELCwwJCxATIQRBACEDA0AgAyAESQRAIAoiAkEBaiEKIAIQExAJIANBAWohAwwBCwsMCAsQEyEHQQAhBANAIAQgB0kEQBATQf8AcSEDEBMhBSAAIgJBAWohACACIAMQEyAFQQFxBH8QEwVBfwsgBRAKIARBAWohBAwBCwsMBwsQEyEGQQAhAwNAIAMgBkkEQBATIQQgCyICQQFqIQsgAhATIARBAXEEfxATBUH//wMLIAQQCyADQQFqIQMMAQsLDAYLEBMhBEEAIQMDQCADIARJBEBBBxAUQf8AcSEFEBMhBhAWIAwiAkEBaiEMIAIgBSAGEAwgA0EBaiEDDAELCwwFCxATIQNBACECA0AgAiADSQRAEBMiBCMAIgVqJAAjACIGLQAAIQcgBkEBaiQAIAIgBxATIAUgBBANIAJBAWohAgwBCwsMBAsQExAODAMLIAJBBEYEfyAFKAIAQe7CtasGRgVBAAsEQBATIQIQEyEEIwAhBQJAAkACQAJAIAIEQCACQQFGDQEgAkECRg0CDAMLEBMhAiMAIAIQDwwDCxATIQJBACEDA0AgAyACSQRAEBMhBhATIgcjACIIaiQAIAYgCCAHEBAgA0EBaiEDDAELCwwCCxATIQZBACECA0AgAiAGSQRAEBMhBxATIQhBACEDA0AgAyAISQRAEBMhCRATIg0jACIOaiQAIAcgCSAOIA0QESADQQFqIQMMAQsLIAJBAWohAgwBCwsMAQsACyAEIAVqJAAMAwUgAkEQRgR/IAUpAwBC897Vk7es2abhAFEFQQALBH8gBUEIaikDAELw4KXz9qyVqcwAUQVBAAsEQBATIgIjACIEaiQAIAQgAhASCwsgAyAGaiQADAILIwAgA2okAAwBCwALBSMAIANqJAALDAELCyMAIAFHBEAACwsDAAELACAQc291cmNlTWFwcGluZ1VSTA5pbmRleC53YXNtLm1hcA==")));var o=e.length,B=(o+65535&-65536)>>16,I=new WebAssembly.Memory({initial:B}),E=new Uint8Array(I.buffer);E.set(e),A.readString=function(A,e){return function(A,e,n){if(n-e<1)return"";for(var o=null,Q=[],t=0,B=0;e191&&B<224?Q[t++]=(31&B)<<6|63&A[e++]:B>239&&B<365?(B=((7&B)<<18|(63&A[e++])<<12|(63&A[e++])<<6|63&A[e++])-65536,Q[t++]=55296+(B>>10),Q[t++]=56320+(1023&B)):Q[t++]=(15&B)<<12|(63&A[e++])<<6|63&A[e++],t>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,Q)),t=0);return o?(t&&o.push(String.fromCharCode.apply(String,Q.slice(0,t))),o.join("")):String.fromCharCode.apply(String,Q.slice(0,t))}(E,A,A+e)};var r={env:{memory:I},options:{}};["onSection","onType","onTypeParam","onTypeReturn","onImport","onFunctionImport","onTableImport","onMemoryImport","onGlobalImport","onMemory","onFunction","onTable","onGlobal","onExport","onStart","onSourceMappingURL","onModuleName","onFunctionName","onLocalName"].forEach(function(A){return r.options[A]=n[A]||function(){}}),new WebAssembly.Instance(Q,r).exports.parse(0,o)};for(var t=new Array(123),B=0;B<64;)t[B<26?B+65:B<52?B+71:B<62?B-4:B-59|43]=B++},function(A,e,n){"use strict";e.__esModule=!0,function(A){A[A.i32=127]="i32",A[A.i64=126]="i64",A[A.f32=125]="f32",A[A.f64=124]="f64",A[A.anyfunc=112]="anyfunc",A[A.func=96]="func",A[A.none=64]="none"}(e.Type||(e.Type={})),function(A){A[A.Custom=0]="Custom",A[A.Type=1]="Type",A[A.Import=2]="Import",A[A.Function=3]="Function",A[A.Table=4]="Table",A[A.Memory=5]="Memory",A[A.Global=6]="Global",A[A.Export=7]="Export",A[A.Start=8]="Start",A[A.Element=9]="Element",A[A.Code=10]="Code",A[A.Data=11]="Data"}(e.SectionId||(e.SectionId={})),function(A){A[A.Function=0]="Function",A[A.Table=1]="Table",A[A.Memory=2]="Memory",A[A.Global=3]="Global"}(e.ExternalKind||(e.ExternalKind={})),function(A){A[A.Module=0]="Module",A[A.Function=1]="Function",A[A.Local=2]="Local"}(e.NameType||(e.NameType={})),e.MAX_PAGES=65535,e.MAX_ELEMS=4294967295,function(A){A[A.end=11]="end",A[A.get_global=35]="get_global",A[A.i32_const=65]="i32_const",A[A.i64_const=66]="i64_const",A[A.f32_const=67]="f32_const",A[A.f64_const=68]="f64_const"}(e.Opcode||(e.Opcode={}))}])}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/parse/index.js.map b/lib/parse/index.js.map deleted file mode 100644 index 0253c777cb..0000000000 --- a/lib/parse/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://asparse/webpack/universalModuleDefinition","webpack://asparse/webpack/bootstrap","webpack://asparse/./src/index.ts","webpack://asparse/./src/common.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","common_1","Type","SectionId","ExternalKind","compiled","parse","binary","options","WebAssembly","Module","string","length","charCodeAt","Math","ceil","buffer","Uint8Array","j","k","undefined","s64","Error","base64_decode","nBytes","nPages","memory","Memory","initial","set","readString","offset","start","end","parts","chunk","push","String","fromCharCode","apply","slice","join","utf8_read","imports","env","forEach","Instance","Array","NameType","MAX_PAGES","MAX_ELEMS","Opcode"],"mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,eAAAC,IACAD,UAAAH,GACA,iBAAAC,QACAA,QAAA,QAAAD,IAEAD,EAAA,QAAAC,IARA,CASC,oBAAAK,UAAAC,KAAA,WACD,mBCTA,IAAAC,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAR,QAGA,IAAAC,EAAAK,EAAAE,IACAC,EAAAD,EACAE,GAAA,EACAV,YAUA,OANAW,EAAAH,GAAAI,KAAAX,EAAAD,QAAAC,IAAAD,QAAAO,GAGAN,EAAAS,GAAA,EAGAT,EAAAD,QA0DA,OArDAO,EAAAM,EAAAF,EAGAJ,EAAAO,EAAAR,EAGAC,EAAAQ,EAAA,SAAAf,EAAAgB,EAAAC,GACAV,EAAAW,EAAAlB,EAAAgB,IACAG,OAAAC,eAAApB,EAAAgB,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CV,EAAAgB,EAAA,SAAAvB,GACA,oBAAAwB,eAAAC,aACAN,OAAAC,eAAApB,EAAAwB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAApB,EAAA,cAAiD0B,OAAA,KAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAQ,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAAjC,GACA,IAAAgB,EAAAhB,KAAA4B,WACA,WAA2B,OAAA5B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAM,EAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD7B,EAAAgC,EAAA,GAIAhC,IAAAiC,EAAA,kECjFAxC,EAAA6B,YAAA,EACA,IAAAY,EAAelC,EAAQ,GACvBP,EAAA0C,KAAAD,EAAAC,KACA1C,EAAA2C,UAAAF,EAAAE,UACA3C,EAAA4C,aAAAH,EAAAG,aAEA,IAAAC,EAAA,KAgDA7C,EAAA8C,MA5CA,SAAAA,EAAAC,EAAAC,GACAA,IACAA,MAEAH,IACAA,EAAA,IAAAI,YAAAC,OA4EA,SAAAC,GACA,IAAAC,EAAAD,EAAAC,OACA,GAAAA,EAAA,CAEA,IADA,IAAAlB,EAAA,EAAAK,EAAAa,IACAb,EAAA,UAAAY,EAAAE,WAAAd,MACAL,EACAkB,EAAAE,KAAAC,KAAA,EAAAH,GAAA,EAAAlB,EAIA,IAFA,IAAAsB,EAAA,IAAAC,WAAAL,GACAM,EAAA,EAAAxC,EAAA,EAAAS,EAAA,EACAlB,EAAA,EAAAkD,EAAAR,EAAAC,OAAsC3C,EAAAkD,GAAO,CAC7C,IAAA7C,EAAAqC,EAAAE,WAAA5C,KACA,QAAAK,GAAA4C,EAAA,EACA,MACA,QAAAE,KAAA9C,EAAA+C,EAAA/C,IACA,MAAAgD,QACA,OAAAJ,GACA,OACA/B,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,KAAAS,GAAA,MAAAb,IAAA,EACAa,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,MAAA,GAAAS,IAAA,MAAAb,IAAA,EACAa,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,MAAA,EAAAS,IAAA,EAAAb,EACA4C,EAAA,GAKA,OAAAA,EACA,MAAAI,QACA,OAAAN,EAvHAO,CAAwD,k5FAExD,IAAAC,EAAAjB,EAAAK,OACAa,GAAAD,EAAA,kBACAE,EAAA,IAAAjB,YAAAkB,QAAyCC,QAAAH,IACzCT,EAAA,IAAAC,WAAAS,EAAAV,QACAA,EAAAa,IAAAtB,GAEAD,EAAAwB,WAAA,SAAAC,EAAAnB,GAAkD,OAiClD,SAAAI,EAAAgB,EAAAC,GAEA,GADAA,EAAAD,EACA,EACA,SAGA,IAFA,IAAAE,EAAA,KAAAC,KAAAlE,EAAA,EACAkB,EAAA,EACA6C,EAAAC,IACA9C,EAAA6B,EAAAgB,MACA,IACAG,EAAAlE,KAAAkB,EAEAA,EAAA,KAAAA,EAAA,IACAgD,EAAAlE,MAAA,GAAAkB,IAAA,KAAA6B,EAAAgB,KAEA7C,EAAA,KAAAA,EAAA,KACAA,IAAA,EAAAA,IAAA,OAAA6B,EAAAgB,OAAA,OAAAhB,EAAAgB,OAAA,KAAAhB,EAAAgB,MAAA,MACAG,EAAAlE,KAAA,OAAAkB,GAAA,IACAgD,EAAAlE,KAAA,YAAAkB,IAGAgD,EAAAlE,MAAA,GAAAkB,IAAA,OAAA6B,EAAAgB,OAAA,KAAAhB,EAAAgB,KAEA/D,EAAA,QACAiE,WAAAE,KAAAC,OAAAC,aAAAC,MAAAF,OAAAF,IACAlE,EAAA,GAGA,OAAAiE,GACAjE,GACAiE,EAAAE,KAAAC,OAAAC,aAAAC,MAAAF,OAAAF,EAAAK,MAAA,EAAAvE,KACAiE,EAAAO,KAAA,KAEAJ,OAAAC,aAAAC,MAAAF,OAAAF,EAAAK,MAAA,EAAAvE,IAjEkDyE,CAAA1B,EAAAe,IAAAnB,IAElD,IAAA+B,GACAC,KACAlB,UAEAlB,aAEA,YACA,SACA,cACA,eACA,WACA,mBACA,gBACA,iBACA,iBACA,WACA,aACA,UACA,WACA,WACA,UACA,qBACA,eACA,iBACA,eACAqC,QAAA,SAAArE,GAA+B,OAAAmE,EAAAnC,QAAAhC,GAAAgC,EAAAhC,IAAA,eAC/B,IAAAiC,YAAAqC,SAAAzC,EAAAsC,GACAnF,QAAA8C,MAAA,EAAAkB,IAqFA,IADA,IAAAH,EAAA,IAAA0B,MAAA,KACA9E,EAAA,EAAeA,EAAA,IACfoD,EAAApD,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,EAAAA,EAAA,OAAAA,kCCzIAT,EAAA6B,YAAA,EAGA,SAAAa,GACAA,IAAA,eACAA,IAAA,eACAA,IAAA,eACAA,IAAA,eACAA,IAAA,uBACAA,IAAA,gBACAA,IAAA,gBAPA,CAQC1C,EAAA0C,OAAA1C,EAAA0C,UAGD,SAAAC,GACAA,IAAA,mBACAA,IAAA,eACAA,IAAA,mBACAA,IAAA,uBACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,mBACAA,IAAA,mBACAA,IAAA,iBACAA,IAAA,qBACAA,IAAA,gBACAA,IAAA,gBAZA,CAaC3C,EAAA2C,YAAA3C,EAAA2C,eAGD,SAAAC,GACAA,IAAA,uBACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,mBAJA,CAKC5C,EAAA4C,eAAA5C,EAAA4C,kBAGD,SAAA4C,GACAA,IAAA,mBACAA,IAAA,uBACAA,IAAA,iBAHA,CAICxF,EAAAwF,WAAAxF,EAAAwF,cAEDxF,EAAAyF,UAAA,MAEAzF,EAAA0F,UAAA,WAGA,SAAAC,GAOAA,IAAA,cAYAA,IAAA,4BA2BAA,IAAA,0BACAA,IAAA,0BACAA,IAAA,0BACAA,IAAA,0BAjDA,CA6KC3F,EAAA2F,SAAA3F,EAAA2F","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asparse\"] = factory();\n\telse\n\t\troot[\"asparse\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar common_1 = require(\"./common\");\r\nexports.Type = common_1.Type;\r\nexports.SectionId = common_1.SectionId;\r\nexports.ExternalKind = common_1.ExternalKind;\r\n/** Cached compiled parser. */\r\nvar compiled = null;\r\nif (typeof WASM_DATA !== \"string\")\r\n WASM_DATA = require(\"fs\").readFileSync(__dirname + \"/../build/index.wasm\", \"base64\");\r\n/** Parses the contents of a WebAssembly binary according to the specified options. */\r\nfunction parse(binary, options) {\r\n if (!options)\r\n options = {};\r\n // compile the parser if not yet compiled\r\n if (!compiled)\r\n compiled = new WebAssembly.Module(base64_decode(WASM_DATA));\r\n // use the binary as the parser's memory\r\n var nBytes = binary.length;\r\n var nPages = ((nBytes + 0xffff) & ~0xffff) >> 16;\r\n var memory = new WebAssembly.Memory({ initial: nPages });\r\n var buffer = new Uint8Array(memory.buffer);\r\n buffer.set(binary);\r\n // provide a way to read strings from memory\r\n parse.readString = function (offset, length) { return utf8_read(buffer, offset, offset + length); };\r\n // instantiate the parser and return its exports\r\n var imports = {\r\n env: {\r\n memory: memory\r\n },\r\n options: {}\r\n };\r\n [\"onSection\",\r\n \"onType\",\r\n \"onTypeParam\",\r\n \"onTypeReturn\",\r\n \"onImport\",\r\n \"onFunctionImport\",\r\n \"onTableImport\",\r\n \"onMemoryImport\",\r\n \"onGlobalImport\",\r\n \"onMemory\",\r\n \"onFunction\",\r\n \"onTable\",\r\n \"onGlobal\",\r\n \"onExport\",\r\n \"onStart\",\r\n \"onSourceMappingURL\",\r\n \"onModuleName\",\r\n \"onFunctionName\",\r\n \"onLocalName\"\r\n ].forEach(function (name) { return imports.options[name] = options[name] || function () { }; });\r\n var instance = new WebAssembly.Instance(compiled, imports);\r\n instance.exports.parse(0, nBytes);\r\n}\r\nexports.parse = parse;\r\n// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/utf8\r\nfunction utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null, chunk = [], i = 0, // char offset\r\n t = 0; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128) {\r\n chunk[i++] = t;\r\n }\r\n else if (t > 191 && t < 224) {\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n }\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n }\r\n else {\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n}\r\n// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/base64\r\nfunction base64_decode(string) {\r\n var length = string.length;\r\n if (length) {\r\n var n = 0, p = length;\r\n while (--p % 4 > 1 && string.charCodeAt(p) === 61)\r\n ++n;\r\n length = Math.ceil(length * 3) / 4 - n;\r\n }\r\n var buffer = new Uint8Array(length);\r\n var j = 0, o = 0, t = 0;\r\n for (var i = 0, k = string.length; i < k;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error();\r\n switch (j) {\r\n case 0: {\r\n t = c;\r\n j = 1;\r\n break;\r\n }\r\n case 1: {\r\n buffer[o++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n }\r\n case 2: {\r\n buffer[o++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n }\r\n case 3: {\r\n buffer[o++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n }\r\n if (j === 1)\r\n throw Error();\r\n return buffer;\r\n}\r\nvar s64 = new Array(123);\r\nfor (var i = 0; i < 64;)\r\n s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n","\"use strict\";\r\n/** Common constants shared between AssemblyScript and TypeScript. */\r\nexports.__esModule = true;\r\n/** WebAssembly types. */\r\nvar Type;\r\n(function (Type) {\r\n Type[Type[\"i32\"] = 127] = \"i32\";\r\n Type[Type[\"i64\"] = 126] = \"i64\";\r\n Type[Type[\"f32\"] = 125] = \"f32\";\r\n Type[Type[\"f64\"] = 124] = \"f64\";\r\n Type[Type[\"anyfunc\"] = 112] = \"anyfunc\";\r\n Type[Type[\"func\"] = 96] = \"func\";\r\n Type[Type[\"none\"] = 64] = \"none\";\r\n})(Type = exports.Type || (exports.Type = {}));\r\n/** WebAssembly section ids. */\r\nvar SectionId;\r\n(function (SectionId) {\r\n SectionId[SectionId[\"Custom\"] = 0] = \"Custom\";\r\n SectionId[SectionId[\"Type\"] = 1] = \"Type\";\r\n SectionId[SectionId[\"Import\"] = 2] = \"Import\";\r\n SectionId[SectionId[\"Function\"] = 3] = \"Function\";\r\n SectionId[SectionId[\"Table\"] = 4] = \"Table\";\r\n SectionId[SectionId[\"Memory\"] = 5] = \"Memory\";\r\n SectionId[SectionId[\"Global\"] = 6] = \"Global\";\r\n SectionId[SectionId[\"Export\"] = 7] = \"Export\";\r\n SectionId[SectionId[\"Start\"] = 8] = \"Start\";\r\n SectionId[SectionId[\"Element\"] = 9] = \"Element\";\r\n SectionId[SectionId[\"Code\"] = 10] = \"Code\";\r\n SectionId[SectionId[\"Data\"] = 11] = \"Data\";\r\n})(SectionId = exports.SectionId || (exports.SectionId = {}));\r\n/** WebAssembly external kinds. */\r\nvar ExternalKind;\r\n(function (ExternalKind) {\r\n ExternalKind[ExternalKind[\"Function\"] = 0] = \"Function\";\r\n ExternalKind[ExternalKind[\"Table\"] = 1] = \"Table\";\r\n ExternalKind[ExternalKind[\"Memory\"] = 2] = \"Memory\";\r\n ExternalKind[ExternalKind[\"Global\"] = 3] = \"Global\";\r\n})(ExternalKind = exports.ExternalKind || (exports.ExternalKind = {}));\r\n/** Name section types. */\r\nvar NameType;\r\n(function (NameType) {\r\n NameType[NameType[\"Module\"] = 0] = \"Module\";\r\n NameType[NameType[\"Function\"] = 1] = \"Function\";\r\n NameType[NameType[\"Local\"] = 2] = \"Local\";\r\n})(NameType = exports.NameType || (exports.NameType = {}));\r\n/** Maximum number of memory pages. */\r\nexports.MAX_PAGES = 0xffff;\r\n/** Maximum number of table elements. */\r\nexports.MAX_ELEMS = 0xffffffff;\r\n/** WebAssembly opcodes. */\r\nvar Opcode;\r\n(function (Opcode) {\r\n // unreachable = 0x00,\r\n // nop = 0x01,\r\n // block = 0x02,\r\n // loop = 0x03,\r\n // if_ = 0x04,\r\n // else_ = 0x05,\r\n Opcode[Opcode[\"end\"] = 11] = \"end\";\r\n // br = 0x0c,\r\n // br_if = 0x0d,\r\n // br_table = 0x0e,\r\n // return_ = 0x0f,\r\n // call = 0x10,\r\n // call_indirect = 0x11,\r\n // drop = 0x1a,\r\n // select = 0x1b,\r\n // get_local = 0x20,\r\n // set_local = 0x21,\r\n // tee_local = 0x22,\r\n Opcode[Opcode[\"get_global\"] = 35] = \"get_global\";\r\n // set_global = 0x24,\r\n // i32_load = 0x28,\r\n // i64_load = 0x29,\r\n // f32_load = 0x2a,\r\n // f64_load = 0x2b,\r\n // i32_load8_s = 0x2c,\r\n // i32_load8_u = 0x2d,\r\n // i32_load16_s = 0x2e,\r\n // i32_load16_u = 0x2f,\r\n // i64_load8_s = 0x30,\r\n // i64_load8_u = 0x31,\r\n // i64_load16_s = 0x32,\r\n // i64_load16_u = 0x33,\r\n // i64_load32_s = 0x34,\r\n // i64_load32_u = 0x35,\r\n // i32_store = 0x36,\r\n // i64_store = 0x37,\r\n // f32_store = 0x38,\r\n // f64_store = 0x39,\r\n // i32_store8 = 0x3a,\r\n // i32_store16 = 0x3b,\r\n // i64_store8 = 0x3c,\r\n // i64_store16 = 0x3d,\r\n // i64_store32 = 0x3e,\r\n // current_memory = 0x3f,\r\n // grow_memory = 0x40,\r\n Opcode[Opcode[\"i32_const\"] = 65] = \"i32_const\";\r\n Opcode[Opcode[\"i64_const\"] = 66] = \"i64_const\";\r\n Opcode[Opcode[\"f32_const\"] = 67] = \"f32_const\";\r\n Opcode[Opcode[\"f64_const\"] = 68] = \"f64_const\";\r\n // i32_eqz = 0x45,\r\n // i32_eq = 0x46,\r\n // i32_ne = 0x47,\r\n // i32_lt_s = 0x48,\r\n // i32_lt_u = 0x49,\r\n // i32_gt_s = 0x4a,\r\n // i32_gt_u = 0x4b,\r\n // i32_le_s = 0x4c,\r\n // i32_le_u = 0x4d,\r\n // i32_ge_s = 0x4e,\r\n // i32_ge_u = 0x4f,\r\n // i64_eqz = 0x50,\r\n // i64_eq = 0x51,\r\n // i64_ne = 0x52,\r\n // i64_lt_s = 0x53,\r\n // i64_lt_u = 0x54,\r\n // i64_gt_s = 0x55,\r\n // i64_gt_u = 0x56,\r\n // i64_le_s = 0x57,\r\n // i64_le_u = 0x58,\r\n // i64_ge_s = 0x59,\r\n // i64_ge_u = 0x5a,\r\n // f32_eq = 0x5b,\r\n // f32_ne = 0x5c,\r\n // f32_lt = 0x5d,\r\n // f32_gt = 0x5e,\r\n // f32_le = 0x5f,\r\n // f32_ge = 0x60,\r\n // f64_eq = 0x61,\r\n // f64_ne = 0x62,\r\n // f64_lt = 0x63,\r\n // f64_gt = 0x64,\r\n // f64_le = 0x65,\r\n // f64_ge = 0x66,\r\n // i32_clz = 0x67,\r\n // i32_ctz = 0x68,\r\n // i32_popcnt = 0x69,\r\n // i32_add = 0x6a,\r\n // i32_sub = 0x6b,\r\n // i32_mul = 0x6c,\r\n // i32_div_s = 0x6d,\r\n // i32_div_u = 0x6e,\r\n // i32_rem_s = 0x6f,\r\n // i32_rem_u = 0x70,\r\n // i32_and = 0x71,\r\n // i32_or = 0x72,\r\n // i32_xor = 0x73,\r\n // i32_shl = 0x74,\r\n // i32_shr_s = 0x75,\r\n // i32_shr_u = 0x76,\r\n // i32_rotl = 0x77,\r\n // i32_rotr = 0x78,\r\n // i64_clz = 0x79,\r\n // i64_ctz = 0x7a,\r\n // i64_popcnt = 0x7b,\r\n // i64_add = 0x7c,\r\n // i64_sub = 0x7d,\r\n // i64_mul = 0x7e,\r\n // i64_div_s = 0x7f,\r\n // i64_div_u = 0x80,\r\n // i64_rem_s = 0x81,\r\n // i64_rem_u = 0x82,\r\n // i64_and = 0x83,\r\n // i64_or = 0x84,\r\n // i64_xor = 0x85,\r\n // i64_shl = 0x86,\r\n // i64_shr_s = 0x87,\r\n // i64_shr_u = 0x88,\r\n // i64_rotl = 0x89,\r\n // i64_rotr = 0x8a,\r\n // f32_abs = 0x8b,\r\n // f32_neg = 0x8c,\r\n // f32_ceil = 0x8d,\r\n // f32_floor = 0x8e,\r\n // f32_trunc = 0x8f,\r\n // f32_nearest = 0x90,\r\n // f32_sqrt = 0x91,\r\n // f32_add = 0x92,\r\n // f32_sub = 0x93,\r\n // f32_mul = 0x94,\r\n // f32_div = 0x95,\r\n // f32_min = 0x96,\r\n // f32_max = 0x97,\r\n // f32_copysign = 0x98,\r\n // f64_abs = 0x99,\r\n // f64_neg = 0x9a,\r\n // f64_ceil = 0x9b,\r\n // f64_floor = 0x9c,\r\n // f64_trunc = 0x9d,\r\n // f64_nearest = 0x9e,\r\n // f64_sqrt = 0x9f,\r\n // f64_add = 0xa0,\r\n // f64_sub = 0xa1,\r\n // f64_mul = 0xa2,\r\n // f64_div = 0xa3,\r\n // f64_min = 0xa4,\r\n // f64_max = 0xa5,\r\n // f64_copysign = 0xa6,\r\n // i32_wrap_i64 = 0xa7,\r\n // i32_trunc_s_f32 = 0xa8,\r\n // i32_trunc_u_f32 = 0xa9,\r\n // i32_trunc_s_f64 = 0xaa,\r\n // i32_trunc_u_f64 = 0xab,\r\n // i64_extend_s_i32 = 0xac,\r\n // i64_extend_u_i32 = 0xad,\r\n // i64_trunc_s_f32 = 0xae,\r\n // i64_trunc_u_f32 = 0xaf,\r\n // i64_trunc_s_f64 = 0xb0,\r\n // i64_trunc_u_f64 = 0xb1,\r\n // f32_convert_s_i32 = 0xb2,\r\n // f32_convert_u_i32 = 0xb3,\r\n // f32_convert_s_i64 = 0xb4,\r\n // f32_convert_u_i64 = 0xb5,\r\n // f32_demote_f64 = 0xb6,\r\n // f64_convert_s_i32 = 0xb7,\r\n // f64_convert_u_i32 = 0xb8,\r\n // f64_convert_s_i64 = 0xb9,\r\n // f64_convert_u_i64 = 0xba,\r\n // f64_promote_f32 = 0xbb,\r\n // i32_reinterpret_f32 = 0xbc,\r\n // i64_reinterpret_f64 = 0xbd,\r\n // f32_reinterpret_i32 = 0xbe,\r\n // f64_reinterpret_i64 = 0xbf\r\n})(Opcode = exports.Opcode || (exports.Opcode = {}));\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/parse/package.json b/lib/parse/package.json deleted file mode 100644 index f91a68c569..0000000000 --- a/lib/parse/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@assemblyscript/parse", - "version": "1.0.0", - "license": "Apache-2.0", - "main": "index.js", - "types": "index.d.ts", - "scripts": { - "asbuild": "asc assembly/index.ts -O3 -b build/index.wasm -t build/index.wat --importMemory --runtime none --sourceMap", - "build": "npm run asbuild && webpack --mode production --display-modules", - "test": "ts-node tests/" - }, - "files": [ - "package.json", - "index.d.ts", - "index.js", - "index.js.map", - "src/", - "README.md" - ], - "dependencies": {}, - "devDependencies": { - "@types/webassembly-js-api": "0.0.1", - "assemblyscript": "AssemblyScript/assemblyscript", - "ts-loader": "^5.2.1", - "ts-node": "^6.2.0", - "typescript": "^3.1.2", - "webpack": "^4.20.2", - "webpack-cli": "^3.1.2" - } -} diff --git a/lib/parse/src/common.ts b/lib/parse/src/common.ts deleted file mode 100644 index e45100db5f..0000000000 --- a/lib/parse/src/common.ts +++ /dev/null @@ -1,225 +0,0 @@ -/** Common constants shared between AssemblyScript and TypeScript. */ - -/** WebAssembly types. */ -export enum Type { - i32 = 0x7f, - i64 = 0x7e, - f32 = 0x7d, - f64 = 0x7c, - anyfunc = 0x70, - func = 0x60, - none = 0x40 -} - -/** WebAssembly section ids. */ -export enum SectionId { - Custom = 0, - Type = 1, - Import = 2, - Function = 3, - Table = 4, - Memory = 5, - Global = 6, - Export = 7, - Start = 8, - Element = 9, - Code = 10, - Data = 11 -} - -/** WebAssembly external kinds. */ -export enum ExternalKind { - Function = 0, - Table = 1, - Memory = 2, - Global = 3 -} - -/** Name section types. */ -export enum NameType { - Module = 0, - Function = 1, - Local = 2 -} - -/** Maximum number of memory pages. */ -export const MAX_PAGES = 0xffff; - -/** Maximum number of table elements. */ -export const MAX_ELEMS = 0xffffffff; - -/** WebAssembly opcodes. */ -export enum Opcode { // just a few of these are actually used - // unreachable = 0x00, - // nop = 0x01, - // block = 0x02, - // loop = 0x03, - // if_ = 0x04, - // else_ = 0x05, - end = 0x0b, - // br = 0x0c, - // br_if = 0x0d, - // br_table = 0x0e, - // return_ = 0x0f, - // call = 0x10, - // call_indirect = 0x11, - // drop = 0x1a, - // select = 0x1b, - // get_local = 0x20, - // set_local = 0x21, - // tee_local = 0x22, - get_global = 0x23, - // set_global = 0x24, - // i32_load = 0x28, - // i64_load = 0x29, - // f32_load = 0x2a, - // f64_load = 0x2b, - // i32_load8_s = 0x2c, - // i32_load8_u = 0x2d, - // i32_load16_s = 0x2e, - // i32_load16_u = 0x2f, - // i64_load8_s = 0x30, - // i64_load8_u = 0x31, - // i64_load16_s = 0x32, - // i64_load16_u = 0x33, - // i64_load32_s = 0x34, - // i64_load32_u = 0x35, - // i32_store = 0x36, - // i64_store = 0x37, - // f32_store = 0x38, - // f64_store = 0x39, - // i32_store8 = 0x3a, - // i32_store16 = 0x3b, - // i64_store8 = 0x3c, - // i64_store16 = 0x3d, - // i64_store32 = 0x3e, - // current_memory = 0x3f, - // grow_memory = 0x40, - i32_const = 0x41, - i64_const = 0x42, - f32_const = 0x43, - f64_const = 0x44 - // i32_eqz = 0x45, - // i32_eq = 0x46, - // i32_ne = 0x47, - // i32_lt_s = 0x48, - // i32_lt_u = 0x49, - // i32_gt_s = 0x4a, - // i32_gt_u = 0x4b, - // i32_le_s = 0x4c, - // i32_le_u = 0x4d, - // i32_ge_s = 0x4e, - // i32_ge_u = 0x4f, - // i64_eqz = 0x50, - // i64_eq = 0x51, - // i64_ne = 0x52, - // i64_lt_s = 0x53, - // i64_lt_u = 0x54, - // i64_gt_s = 0x55, - // i64_gt_u = 0x56, - // i64_le_s = 0x57, - // i64_le_u = 0x58, - // i64_ge_s = 0x59, - // i64_ge_u = 0x5a, - // f32_eq = 0x5b, - // f32_ne = 0x5c, - // f32_lt = 0x5d, - // f32_gt = 0x5e, - // f32_le = 0x5f, - // f32_ge = 0x60, - // f64_eq = 0x61, - // f64_ne = 0x62, - // f64_lt = 0x63, - // f64_gt = 0x64, - // f64_le = 0x65, - // f64_ge = 0x66, - // i32_clz = 0x67, - // i32_ctz = 0x68, - // i32_popcnt = 0x69, - // i32_add = 0x6a, - // i32_sub = 0x6b, - // i32_mul = 0x6c, - // i32_div_s = 0x6d, - // i32_div_u = 0x6e, - // i32_rem_s = 0x6f, - // i32_rem_u = 0x70, - // i32_and = 0x71, - // i32_or = 0x72, - // i32_xor = 0x73, - // i32_shl = 0x74, - // i32_shr_s = 0x75, - // i32_shr_u = 0x76, - // i32_rotl = 0x77, - // i32_rotr = 0x78, - // i64_clz = 0x79, - // i64_ctz = 0x7a, - // i64_popcnt = 0x7b, - // i64_add = 0x7c, - // i64_sub = 0x7d, - // i64_mul = 0x7e, - // i64_div_s = 0x7f, - // i64_div_u = 0x80, - // i64_rem_s = 0x81, - // i64_rem_u = 0x82, - // i64_and = 0x83, - // i64_or = 0x84, - // i64_xor = 0x85, - // i64_shl = 0x86, - // i64_shr_s = 0x87, - // i64_shr_u = 0x88, - // i64_rotl = 0x89, - // i64_rotr = 0x8a, - // f32_abs = 0x8b, - // f32_neg = 0x8c, - // f32_ceil = 0x8d, - // f32_floor = 0x8e, - // f32_trunc = 0x8f, - // f32_nearest = 0x90, - // f32_sqrt = 0x91, - // f32_add = 0x92, - // f32_sub = 0x93, - // f32_mul = 0x94, - // f32_div = 0x95, - // f32_min = 0x96, - // f32_max = 0x97, - // f32_copysign = 0x98, - // f64_abs = 0x99, - // f64_neg = 0x9a, - // f64_ceil = 0x9b, - // f64_floor = 0x9c, - // f64_trunc = 0x9d, - // f64_nearest = 0x9e, - // f64_sqrt = 0x9f, - // f64_add = 0xa0, - // f64_sub = 0xa1, - // f64_mul = 0xa2, - // f64_div = 0xa3, - // f64_min = 0xa4, - // f64_max = 0xa5, - // f64_copysign = 0xa6, - // i32_wrap_i64 = 0xa7, - // i32_trunc_s_f32 = 0xa8, - // i32_trunc_u_f32 = 0xa9, - // i32_trunc_s_f64 = 0xaa, - // i32_trunc_u_f64 = 0xab, - // i64_extend_s_i32 = 0xac, - // i64_extend_u_i32 = 0xad, - // i64_trunc_s_f32 = 0xae, - // i64_trunc_u_f32 = 0xaf, - // i64_trunc_s_f64 = 0xb0, - // i64_trunc_u_f64 = 0xb1, - // f32_convert_s_i32 = 0xb2, - // f32_convert_u_i32 = 0xb3, - // f32_convert_s_i64 = 0xb4, - // f32_convert_u_i64 = 0xb5, - // f32_demote_f64 = 0xb6, - // f64_convert_s_i32 = 0xb7, - // f64_convert_u_i32 = 0xb8, - // f64_convert_s_i64 = 0xb9, - // f64_convert_u_i64 = 0xba, - // f64_promote_f32 = 0xbb, - // i32_reinterpret_f32 = 0xbc, - // i64_reinterpret_f64 = 0xbd, - // f32_reinterpret_i32 = 0xbe, - // f64_reinterpret_i64 = 0xbf -} diff --git a/lib/parse/src/index.ts b/lib/parse/src/index.ts deleted file mode 100644 index ebd48a3541..0000000000 --- a/lib/parse/src/index.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { Type, SectionId, ExternalKind } from "./common"; -export { Type, SectionId, ExternalKind }; - -/** Cached compiled parser. */ -var compiled: WebAssembly.Module | null = null; - -declare var WASM_DATA: string; // injected by webpack -if (typeof WASM_DATA !== "string") { - // eslint-disable-next-line @typescript-eslint/no-var-requires - WASM_DATA = require("fs").readFileSync(__dirname + "/../build/index.wasm", "base64"); -} - -/** Options specified to the parser. The `onSection` callback determines the sections being evaluated in detail. */ -export interface ParseOptions { - /** Called with each section in the binary. Returning `true` evaluates the section. */ - onSection?(id: SectionId, payloadOff: number, payloadLen: number, nameOff: number, nameLen: number): boolean; - /** Called with each function type if the type section is evaluated. */ - onType?(index: number, form: number): void; - /** Called with each function parameter if the type section is evaluated. */ - onTypeParam?(index: number, paramIndex: number, paramType: Type): void; - /** Called with each function return type if the type section is evaluated. */ - onTypeReturn?(index: number, returnIndex: number, returnType: Type): void; - /** Called with each import if the import section is evaluated. */ - onImport?(index: number, kind: ExternalKind, moduleOff: number, moduleLen: number, fieldOff: number, fieldLen: number): void; - /** Called with each function import if the import section is evaluated. */ - onFunctionImport?(index: number, type: number): void; - /** Called with each table import if the import section is evaluated. */ - onTableImport?(index: number, type: Type, initial: number, maximum: number, flags: number): void; - /** Called with each memory import if the import section is evaluated. */ - onMemoryImport?(index: number, initial: number, maximum: number, flags: number): void; - /** Called with each global import if the import section is evaluated. */ - onGlobalImport?(index: number, type: Type, mutability: number): void; - /** Called with each memory if the memory section is evaluated.*/ - onMemory?(index: number, initial: number, maximum: number, flags: number): void; - /** Called with each function if the function section is evaluated. */ - onFunction?(index: number, typeIndex: number): void; - /** Called with each table if the table section is evaluated.*/ - onTable?(index: number, type: Type, initial: number, maximum: number, flags: number): void; - /** Called with each global if the global section is evaluated. */ - onGlobal?(index: number, type: Type, mutability: number): void; - /** Called with the start function index if the start section is evaluated. */ - onStart?(index: number): void; - /** Called with each export if the export section is evaluated. */ - onExport?(index: number, kind: ExternalKind, kindIndex: number, nameOff: number, nameLen: number): void; - /** Called with the source map URL if the 'sourceMappingURL' section is evaluated. */ - onSourceMappingURL?(offset: number, length: number): void; - /** Called with the module name if present and the 'name' section is evaluated. */ - onModuleName?(offset: number, length: number): void; - /** Called with each function name if present and the 'name' section is evaluated. */ - onFunctionName?(index: number, offset: number, length: number): void; - /** Called with each local name if present and the 'name' section is evaluated. */ - onLocalName?(funcIndex: number, index: number, offset: number, length: number): void; -} - -/** Parses the contents of a WebAssembly binary according to the specified options. */ -export function parse(binary: Uint8Array, options?: ParseOptions): void { - if (!options) options = {}; - - // compile the parser if not yet compiled - if (!compiled) compiled = new WebAssembly.Module(base64_decode(WASM_DATA)); - - // use the binary as the parser's memory - var nBytes = binary.length; - var nPages = ((nBytes + 0xffff) & ~0xffff) >> 16; - var memory = new WebAssembly.Memory({ initial: nPages }); - var buffer = new Uint8Array(memory.buffer); - buffer.set(binary); - - // provide a way to read strings from memory - parse.readString = (offset: number, length: number): string => utf8_read(buffer, offset, offset + length); - - // instantiate the parser and return its exports - var imports = { - env: { - memory - }, - options: {} - }; - [ "onSection", - "onType", - "onTypeParam", - "onTypeReturn", - "onImport", - "onFunctionImport", - "onTableImport", - "onMemoryImport", - "onGlobalImport", - "onMemory", - "onFunction", - "onTable", - "onGlobal", - "onExport", - "onStart", - "onSourceMappingURL", - "onModuleName", - "onFunctionName", - "onLocalName" - ].forEach((name: string) => imports.options[name] = options[name] || function() { /* nop */ }); - var instance = new WebAssembly.Instance(compiled, imports); - instance.exports.parse(0, nBytes); -} - -export declare namespace parse { - /** Utility function for reading an UTF8 encoded string from memory while parsing. */ - function readString(offset: number, length: number): string; -} - -// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/utf8 -function utf8_read(buffer: Uint8Array, start: number, end: number): string { - var len = end - start; - if (len < 1) return ""; - var parts: string[] | null = null, chunk: number[] = []; - var i = 0, t = 0; // char offset and temporary - while (start < end) { - t = buffer[start++]; - if (t < 128) { - chunk[i++] = t; - } else if (t > 191 && t < 224) { - chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; - } else if (t > 239 && t < 365) { - t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; - chunk[i++] = 0xD800 + (t >> 10); - chunk[i++] = 0xDC00 + (t & 1023); - } else { - chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; - } - if (i > 8191) { - (parts || (parts = [])).push(String.fromCharCode(...chunk)); - i = 0; - } - } - if (parts) { - if (i) parts.push(String.fromCharCode(...chunk.slice(0, i))); - return parts.join(""); - } - return String.fromCharCode(...chunk.slice(0, i)); -} - -// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/base64 -function base64_decode(string: string): Uint8Array { - var length = string.length; - if (length) { - let n = 0, p = length; - while (--p % 4 > 1 && string.charCodeAt(p) === 61) ++n; - length = Math.ceil(length * 3) / 4 - n; - } - var buffer = new Uint8Array(length); - var j = 0, o = 0, t = 0; - for (let i = 0, k = string.length; i < k;) { - let c = string.charCodeAt(i++); - if (c === 61 && j > 1) break; - if ((c = s64[c]) === undefined) throw Error(); - switch (j) { - case 0: { t = c; j = 1; break; } - case 1: { buffer[o++] = t << 2 | (c & 48) >> 4; t = c; j = 2; break; } - case 2: { buffer[o++] = (t & 15) << 4 | (c & 60) >> 2; t = c; j = 3; break; } - case 3: { buffer[o++] = (t & 3) << 6 | c; j = 0; break; } - } - } - if (j === 1) throw Error(); - return buffer; -} - -var s64 = new Array(123); -for (let i = 0; i < 64;) s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; diff --git a/lib/parse/tests/index.ts b/lib/parse/tests/index.ts deleted file mode 100644 index 3ca12d4c62..0000000000 --- a/lib/parse/tests/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -import * as fs from "fs"; -import { - Type, - SectionId, - ExternalKind, - parse -} from ".."; - -function onSection(id: SectionId, offset: number, length: number, nameOffset: number, nameLength: number): boolean { - var name = id == 0 ? "'" + parse.readString(nameOffset, nameLength) + "'" : SectionId[id]; - console.log(name + " section at " + offset + ".." + (offset + length)); - return true; -} - -function onType(index: number, form: Type): void { - console.log("- FunctionType[" + index + "]: " + Type[form]); -} - -function onTypeParam(index: number, paramIndex: number, paramType: Type): void { - console.log(" > param[" + paramIndex + "] -> " + Type[paramType]); -} - -function onTypeReturn(index: number, returnIndex: number, returnType: Type): void { - console.log(" > return[" + returnIndex + "] -> " + Type[returnType]); -} - -function onImport(index: number, kind: ExternalKind, moduleOff: number, moduleLen: number, fieldOff: number, fieldLen: number): void { - var moduleName = parse.readString(moduleOff, moduleLen); - var fieldName = parse.readString(fieldOff, fieldLen); - console.log("- Import[" + index + "]: '" + moduleName + "." + fieldName + "'"); -} - -function onFunctionImport(funIndex: number, type: number): void { - console.log(" - Function[" + funIndex + "] -> FunctionType[" + type + "]"); -} - -function onTableImport(tblIndex: number, type: Type, initial: number, maximum: number, flags: number): void { - console.log(" - Table[" + tblIndex + "] -> " + Type[type] + ": initial=" + initial + ", maximum=" + maximum); -} - -function onMemoryImport(memIndex: number, initial: number, maximum: number, flags: number): void { - console.log(" - Memory[" + memIndex + "]: initial=" + initial + ", maximum=" + maximum); -} - -function onGlobalImport(gloIndex: number, type: Type, mutability: number): void { - console.log(" - Global[" + gloIndex + "]: " + (mutability & 1 ? "mutable " : "const ") + Type[type]); -} - -function onMemory(memIndex: number, initial: number, maximum: number, flags: number): void { - console.log("- Memory[" + memIndex + "]: initial=" + initial + ", maximum=" + maximum); -} - -function onFunction(funIndex: number, typeIndex: number): void { - console.log("- Function[" + funIndex + "] -> FunctionType[" + typeIndex + "]"); -} - -function onTable(tblIndex: number, type: number, initial: number, maximum: number, flags: number): void { - console.log("- Table[" + tblIndex + "] -> " + Type[type] + ": initial=" + initial + ", maximum=" + (maximum >>> 0)); -} - -function onGlobal(gloIndex: number, type: Type, mutability: number): void { - console.log("- Global[" + gloIndex + "]: " + (mutability & 1 ? "mutable " : "const ") + Type[type]); -} - -function onStart(index: number): void { - console.log("- Start: Function[" + index + "]"); -} - -function onExport(index: number, kind: ExternalKind, kindIndex: number, fieldOffset: number, fieldLength: number): void { - var field = parse.readString(fieldOffset, fieldLength); - console.log("- Export[" + index + "], '" + field + "' -> " + ExternalKind[kind] + "[" + kindIndex + "]"); -} - -function onSourceMappingURL(offset: number, length: number): void { - var url = parse.readString(offset, length); - console.log("- sourceMap: " + url); -} - -function onModuleName(offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log("- moduleName: " + name); -} - -function onFunctionName(index: number, offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log(" - Function[" + index + "] name: " + name); -} - -function onLocalName(funcIndex: number, index: number, offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log(" - Function[" + funcIndex + "].local[" + index + "] name: " + name); -} - -[ "../build/index.wasm", - "libm.wasm" -].forEach((filename: string): void => { - const binary: Uint8Array = fs.readFileSync(__dirname + "/" + filename); - console.log("Testing '" + filename + "' ..."); - parse(binary, { - onSection, - onType, - onTypeParam, - onTypeReturn, - onImport, - onFunctionImport, - onTableImport, - onMemoryImport, - onGlobalImport, - onMemory, - onFunction, - onTable, - onGlobal, - onStart, - onExport, - onSourceMappingURL, - onModuleName, - onFunctionName, - onLocalName - }); - console.log(); -}); diff --git a/lib/parse/tests/libm.wasm b/lib/parse/tests/libm.wasm deleted file mode 100644 index 44467da623583daa1db300cf52d7faed4a0a6fdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10175 zcmdT~dz4kxdEe*kbMBp)Gmpzd5RGx)6Erjk@-V&v+ej6`7-Pn8Ymw1rv@J5*)Nec5=(va9cmsyd`53eS zA5%RTH*^mg(HMqoZZIQNSJuV~EB|=tmnw>O-a&iVf@hxF(_qT>iJQ*!*N#1&qyFmm zuD;~%!$)Pif79q?w_NgT*}im4;r9Q|mdp9Ce6D@@W4@ZN+P}&<>1WN+#x%~X*>lE^ z;|8BSX971cdi1xs6X>sGE|itR>4PwE&Fsq5^5(|YHA|VWSKPU_v4y$T%GIr_ z*r)ia#yi+Z8^7bnv8&~CE&H^E_X+F|`0Bb1>@$2d5F5?cHvTyqV=E}vTI*Kcv4)M~ zg!3@G0LKZ|x+dT@krU#>EQ$AL?Uv@&HA~p_snyF?H#XmCvWlKrH`q+D9nSp*9)$(+ zb1;YIJ&hmo!9RYjNWFz^)eByDnR-9>;EHEPZF-z~w|&QG?L9Grddq)(w(4Ieo4L@B zzXc^3eKb64%zdBu^v%2n&40LW;iK<;hUL**XxxAKs?>1;wdtX;dk%j0>3Ds&^NeYl z?Pi-``)b9uov!H(;FE504X>l4XMoSO@*-+BV9w6wY3MM$E7x23f|iyVC&GcTlBU2h zgYFtfF7FuNGa^VG@9@vZi%;jULcuvr2S|T$=)|kP`Q=HpSgCQM)%6x~$9Pf@KWB!x&`X2VsITy(7n2#~Ra6$XL}%kTF6 z&`ANkjOo11Id3;MT5X<@H4+-0+44a@pW$+=U2t0>?|4R&q#RN8ZlWsF7!>PD-WVg2 z0k}p=b(o&f0)})PN)s7DW&r)(*+czzgOnblt+Td6I}!M_1YhHT^dNL19{xVpA|`vs z_Fq-+a&PE*Zy?GuGkbHw4)KSG^Rp*z`e1S>(!MWJ0g%F6#(Jfx41MQO&0sKBQBP?G zi@9q+86xglwZ_(3HZLK1kvJJDB_Ngg2xGmOSyOIET)J&)810cYh!rKg)USNH6e_Th zHnIg*J4ciw{R7uctd%S_yrHec;`*$a(AM}r@yeAf$fnL`SX!iGhNZ>F%OP`b!XM2X z^p$c4K5!$c-F4e)A#AQu+fjCVi8l4+f|$DJwL?uaFePeYM(B6>8Hs zHq7LILd=TiB+Fr-6GO{kslh72{cc$N3qZjz3=a@fo%|!qp&VGSpq?A`#1`UJoU?9PeY1%86CvSe2U~mH&TP=GpE#XO_ zkUz0x_+3d8^Q|l+{p7W5J`67Fv~dD;gbL?A`y4+^Rt2Vklr?e3z9lWYV2hO#h?zp? zOn6k(Y&e~BNR(kn`rwYRhMFA^5w+ZFCp*J-5K%Dj1M<;rviY!Vl4FVRmwb%RqNRm; z{ccH9xFcKXTUHPf&BvPuzEI z-u>6wUr-zc>RE;FefTiE#>+)Cn}&U=|D~qqskyqd<;h<>^)xj*&%QN(%v-yudF`tD zYYKlC7ULL9stUW6$Vx&iEI&llV&+S~!l~1vGjD1*^)R?Gug~UNL4CgT72TI-Y=s0 zYIb6K+Z!e!5H*2-eQ_u(`e1(4>WBfJe+--hcy)++VJR;J(rZj3^8dyI+90lE87(3( zdeC!A`L2sT1E~im?YDQlGk_+6qY$tqjNnx$YA&_JQH&kQ5;23#fY;TgO-6F(uA;n&No&m4c-v2&J#5yKWmGS(ne|TA z5T;B#aP*Fj_RYeeKzd72T095{>n6Jg6)rqqq-8bg_Z2#fH&uRRh|NY(9*i%uUtUPa7o7}JsnGTuNZsa?havbgpq&e6P zO+bkvnZXVvu#Y%t{O-DAufq}hAG4$UhZKmC3uzb9n@OcCmrtI{!Qn(F2Q3X z(Fd^v7wFa3NLMojNJ2M?%Zl0z<{_KI1n`{fU-lRloAMA zqyuC=0Xk@g*A9CUpIx3x$2`3`%EArLAmgLCbELQ=p3iy!O%L?uN^|YlyOZGucA-z8 zcGnK1+iI`dT11Xvct$-pWVjiqOj5Jt-(o>4Dl z(F4D23^THZBLkvM8z@-Na57B6=}*@K&Tk#V41%LFy_k-nbIde(NhwE$kQ}Fu4cE6` zdU(tEdiWa@4|JY4Zp`bM8GqSR!e|&Vl7v_zVK0?V&b8W0RZ7zcVaGT9UC==Rm&zL) zw={(dThpl>Hc@g+u z^VU^Q*8kBU%q*O2c=e#S@45YG9(jC!^U52RPl*)>+N&jrgf!?D7L@`>=1gt4(ac=x zjFPfY_|i`=yJWfeYCgz}h|by5?iw0KPkZP*VwmJWD9IuE%MaV^nv{Y_&j3yzcvA-2 zd39bHm&bw``&&9@X1I%^YVa%{&jLZhZmCZMYzty+J%%a@%Zw<|1~?EO))c*$shs0- z^%$WZ!=-h9RQ^8e+)HH-j=I+Q_(NIGJ&;XNUkWuK8;YEkC7xo|5H>$^J--T0N~CPP|CW`(?fQKBP@Y*B}6W4<Cg^VtJK4Ce)M}@jQpMXo(kcM zVPjH}CPVR3s2-C_O2a54ADEvK))HT#ykIU%ipX|SM7EP6vi*@FvYix>?WBlof24@) z11AVvnM6#;YcwF_10CS%7g%^=?Elz5qv|qoT#frOL<4huNQL6;C>c`=;~UZQac9dQ zUJmb3CN#7Gv7rWPvIIh_J36g7xS24s6(EI##_^7(DoDF2 zZzx%K%ezjb8rHkEe6|P+&cZVVf`um7c0@`Rd0(u;tX9mTXN#b;w`3MYLP*fnOm#9W zQinvyQQn-q5e{V@!xe`xbX0*XrpAtXwRkavAf2e4F+J&2J7tIZDCE*4n7qvCnf#ES zrb>Sq9lwK4BE5y~8Q|0d5)lrp3ttn;pF58xN`MqCD}bV= z@MtUBHtF3PHik*dM)$&Bo;q;lnr|Qqi(4gI5q4^;|2Kq6ja)8pt3*{8y&}S@itcey zg{+EtkL1Dt-z?d9wumm)vBDjM@xt4Gddm6s?Nbm%#Bp*MxP$%JA7!h>U{Ngw;mQrQ zS5rv^an+lJH;qPqYUozV+uAION;E6J<&osdHMy$j!kb|vEboCm)w8X34>E0eXZ~&M zt!T^8$bbiqwrI$552a{CZ~#o9YRzWBqw<5^_LQ#WLE=)E!$-M;V!A-6PzZJhhwhN% zFjeT~p3y4x!ED9@6`hnfxJBL&7Tsz{R{#YVB8G%+Mr6VQpGco~aw1b0_*Uc5XICGk z=I5_|aNdFiAaSN(cvn2JsO3l0Tz2&3?K8K&Ld_F%rp+9+@la_=7jy*4MKvxJfCl&h zH&G>qpxW!|^OWV$1J-1GQJJv7t&R>=mJdXR@T2$M^6&o#_y~C5B*Ozo8vFkC_j<4lnas4 zv4spYBmxF=ixpYP3#t~h)rjQvYm-1L?7b8#FEW>ej07m%)I_|47J$MDZ(L;nrs6+rNJtDw3&cCV z4GdubZd&y>m33bfsM|nrTo_~ehFBQqu2qFNcdbft*Qz9Ut-4U|3YKfBWqIVTg8>(U z2ayM}LLVj{FUn%zs6$)oVIN>J*lgJDO3G^C8Dh1!l-fIPWt@Us%RO{wQsY+3?aXS3%lX=VqDv zyE4DS7K{OA3=R=P)MgB*>i#170pxi_KvVbk=Aev{mWn?4Xnt=oYZ28*h2%$-43HF4 z45&&5GRwyW?QjYKNobS*t)c5*C=g0CDELYgVOLPu#aZY_BbCE_HE~B3cuTvfLXa%9 zuqJa^^v^EiWoe+x`M|(Mr7Uc?TvmADM9#sNQ=-o!d_UN^bwJi}2-73?TC)<;lo&hK zjjLmYZ%MT +fetch("debug.wasm").then(result => result.arrayBuffer() ).then(buffer => WebAssembly.instantiate(buffer, { @@ -27,7 +27,7 @@ }) ).then(result => { exports = result.instance.exports; - if (exports._start) exports._start(); + if (exports._initialize) exports._initialize(); U32 = new Uint32Array(exports.memory.buffer); var first = exports.__alloc(255); exports.__free(first); diff --git a/lib/sdk/README.md b/lib/sdk/README.md deleted file mode 100644 index 1927878f8f..0000000000 --- a/lib/sdk/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Browser SDK - -An SDK to use the AssemblyScript compiler on the web. This is built to distribution files using the exact versions of the compiler and its dependencies. - -Expects [require.js](https://requirejs.org) (or compatible) on the web, primarily targeting [WebAssembly Studio](https://webassembly.studio). Note that consuming the source file in this directory directly does not solve any versioning issues - use `dist/sdk.js` instead. Do not try to bundle this. - -Exports -------- - -* **binaryen**
- The version of binaryen required by the compiler. - -* **long**
- The version of long.js required by the compiler. - -* **assemblyscript**
- The AssemblyScript compiler as a library. - -* **asc**
- AssemblyScript compiler frontend that one will interact with - ([see](https://github.com/AssemblyScript/assemblyscript/tree/main/cli)). - -Example usage -------------- - -```js -require( - ["https://cdn.jsdelivr.net/npm/assemblyscript@latest/dist/sdk"], - function(sdk) { - const { asc } = sdk; - asc.ready.then(() => { - asc.main(...); - }); - } -); -``` - -There is also the [SDK example](https://github.com/AssemblyScript/examples/tree/main/sdk) showing how to compile some actual code. diff --git a/lib/sdk/index.js b/lib/sdk/index.js deleted file mode 100644 index ad20f72bdd..0000000000 --- a/lib/sdk/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const BINARYEN_VERSION = "nightly"; -const LONG_VERSION = "latest"; -const ASSEMBLYSCRIPT_VERSION = "latest"; - -// AMD/require.js (browser) -if (typeof define === "function" && define.amd) { - const paths = { - "binaryen": "https://cdn.jsdelivr.net/npm/binaryen@" + BINARYEN_VERSION + "/index", - "long": "https://cdn.jsdelivr.net/npm/long@" + LONG_VERSION + "/umd/index", - "assemblyscript": "https://cdn.jsdelivr.net/npm/assemblyscript@" + ASSEMBLYSCRIPT_VERSION + "/dist/assemblyscript", - "assemblyscript/cli/asc": "https://cdn.jsdelivr.net/npm/assemblyscript@" + ASSEMBLYSCRIPT_VERSION + "/dist/asc", - }; - require.config({ paths }); - define(Object.keys(paths), (binaryen, long, assemblyscript, asc) => ({ - BINARYEN_VERSION, - LONG_VERSION, - ASSEMBLYSCRIPT_VERSION, - binaryen, - long, - assemblyscript, - asc - })); - -// CommonJS fallback (node) -} else if (typeof module === "object" && module.exports) { - module.exports = { - BINARYEN_VERSION, - LONG_VERSION, - ASSEMBLYSCRIPT_VERSION, - binaryen: require("binaryen"), - long: require("long"), - assemblyscript: require("assemblyscript"), - asc: require("assemblyscript/cli/asc") - }; -} diff --git a/lib/sdk/tests/index.html b/lib/sdk/tests/index.html deleted file mode 100644 index 5d5eb34fc8..0000000000 --- a/lib/sdk/tests/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - diff --git a/lib/webpack/README.md b/lib/webpack/README.md deleted file mode 100644 index 733f718636..0000000000 --- a/lib/webpack/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Webpack loader - -An experimental [webpack](https://webpack.js.org/) loader for [AssemblyScript](http://assemblyscript.org) modules. - -Usage ------ - -```js -import MyModule from "@assemblyscript/webpack!mymodule.wasm"; - -var myModule = new MyModule({ imports: { /* if any */ } }); -``` - -TODO: Pipe .ts files through `asc`, accepting the usual options, but also keep raw .wasm support. diff --git a/lib/webpack/decode.js b/lib/webpack/decode.js deleted file mode 100644 index 364df2089f..0000000000 --- a/lib/webpack/decode.js +++ /dev/null @@ -1,26 +0,0 @@ -var s64 = new Array(123); -for (var i = 0; i < 64;) s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; - -module.exports = function decode(string) { - var length = string.length; - if (length) { - var n = 0, p = length; - while (--p % 4 > 1 && string.charCodeAt(p) === 61) ++n; - length = Math.ceil(length * 3) / 4 - n; - } - var buffer = new Uint8Array(length); - var j = 0, o = 0, t; - for (var i = 0, k = string.length; i < k;) { - var c = string.charCodeAt(i++); - if (c === 61 && j > 1) break; - if ((c = s64[c]) === undefined) throw Error(); - switch (j) { - case 0: t = c; j = 1; break; - case 1: buffer[o++] = t << 2 | (c & 48) >> 4; t = c; j = 2; break; - case 2: buffer[o++] = (t & 15) << 4 | (c & 60) >> 2; t = c; j = 3; break; - case 3: buffer[o++] = (t & 3) << 6 | c; j = 0; break; - } - } - if (j === 1) throw Error(); - return buffer; -}; diff --git a/lib/webpack/index.js b/lib/webpack/index.js deleted file mode 100644 index d622ce5164..0000000000 --- a/lib/webpack/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const asc = require("assemblyscript/cli/asc.js"); -const base64 = require("@protobufjs/base64"); - -const MAGIC = Buffer.from([ 0x00, 0x61, 0x73, 0x6D ]); - -module.exports = loader; - -function loader(buffer) { - if (MAGIC.compare(buffer, 0, 4) !== 0) - return compile.call(this); - else - return bundle.call(this, buffer); -} - -loader.raw = true; - -function compile() { - const basePath = this.resourcePath.replace(/\.\w+$/, ""); - const args = [ - path.basename(this.resourcePath), - "--baseDir", path.dirname(this.resourcePath), - "--binaryFile", basePath + ".wasm", - "--textFile", basePath + ".wat", - "--optimize" - ]; - if (this.sourceMap) - args.push("--sourceMap"); - asc.main(args, err => { - if (err) - return this.callback(err); - fs.readFile(basePath + ".wasm", (err, binary) => { - if (err) - return this.callback(err); - if (!this.sourceMap) - return this.callback(null, bundle(binary)); - fs.readFile(basePath + ".wasm.map", (err, sourceMap) => { - if (err) - return this.callback(err); - return this.callback(null, bundle(binary), sourceMap.toString("utf8")); - }); - }); - }); -} - -function bundle(binary) { - const data = base64.encode(binary, 0, binary.wasm); - return [ - 'var data = "' + data + '", wasm;', - 'module.exports = function AssemblyScriptModule(options) {', - ' if (!wasm)', - ' wasm = new WebAssembly.Module(require("@assemblyscript/webpack/decode")(data));', - ' return new WebAssembly.Instance(wasm, options && options.imports || {}).exports;', - '};' - ].join("\n") + "\n"; -} diff --git a/lib/webpack/package.json b/lib/webpack/package.json deleted file mode 100644 index 169206ff98..0000000000 --- a/lib/webpack/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@assemblyscript/webpack", - "version": "0.5.0", - "description": "webpack loader for AssemblyScript modules.", - "license": "Apache-2.0", - "dependencies": { - "@protobufjs/base64": "^1.1.2" - } -} diff --git a/package-lock.json b/package-lock.json index 31d47ea1d5..4dd6cb69ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,78 +5,40 @@ "requires": true, "packages": { "": { - "name": "assemblyscript", "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "102.0.0-nightly.20211028", - "long": "^5.2.0", - "source-map-support": "^0.5.20", - "ts-node": "^10.4.0" + "binaryen": "106.0.0-nightly.20220320", + "long": "^5.2.0" }, "bin": { - "asc": "bin/asc", - "asinit": "bin/asinit" + "asc": "bin/asc.js", + "asinit": "bin/asinit.js" }, "devDependencies": { "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/parser": "^5.4.0", "diff": "^5.0.0", + "esbuild": "^0.14.1", "eslint": "^8.2.0", "glob": "^7.2.0", - "mkdirp": "^1.0.4", - "physical-cpu-count": "^2.0.0", - "ts-loader": "^9.2.6", - "ts-node": "^10.4.0", - "typescript": "~4.5.2", - "webpack": "^5.64.1", - "webpack-cli": "^4.9.1" + "typescript": "~4.5.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/assemblyscript" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", - "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", + "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", + "espree": "^9.3.1", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", @@ -98,12 +60,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, @@ -152,56 +114,6 @@ "node": ">= 8" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", - "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", @@ -209,19 +121,20 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", - "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", + "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.4.0", - "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/type-utils": "5.13.0", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -246,18 +159,16 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", - "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", + "node_modules/@typescript-eslint/parser": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", + "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "debug": "^4.3.2" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -267,19 +178,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", + "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -287,24 +201,17 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", + "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" + "@typescript-eslint/utils": "5.13.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -312,12 +219,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", + "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -328,13 +243,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", + "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -354,14 +269,18 @@ } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", + "node_modules/@typescript-eslint/utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", + "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -369,206 +288,32 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", + "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", "dev": true, "dependencies": { - "envinfo": "^7.7.3" + "@typescript-eslint/types": "5.13.0", + "eslint-visitor-keys": "^3.0.0" }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -577,15 +322,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -595,15 +331,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -620,24 +347,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -662,12 +371,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -690,11 +393,12 @@ "dev": true }, "node_modules/binaryen": { - "version": "102.0.0-nightly.20211028", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", - "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==", + "version": "106.0.0-nightly.20220320", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-106.0.0-nightly.20220320.tgz", + "integrity": "sha512-9Jzp9aOJ2uk2+viAiPr6+wi1BZKlxO4paTVm481RUEq3PIY63kdw78JoThrROt1s1qpCMuz0Oml6YqPJ7tep4w==", "bin": { - "wasm-opt": "bin/wasm-opt" + "wasm-opt": "bin/wasm-opt", + "wasm2js": "bin/wasm2js" } }, "node_modules/brace-expansion": { @@ -719,34 +423,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", - "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -756,16 +432,6 @@ "node": ">=6" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001278", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", - "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -782,29 +448,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -823,30 +466,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -862,9 +487,9 @@ } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -917,95 +542,391 @@ "node": ">=6.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.3.891", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz", - "integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "node_modules/esbuild": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz", + "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.25", + "esbuild-android-arm64": "0.14.25", + "esbuild-darwin-64": "0.14.25", + "esbuild-darwin-arm64": "0.14.25", + "esbuild-freebsd-64": "0.14.25", + "esbuild-freebsd-arm64": "0.14.25", + "esbuild-linux-32": "0.14.25", + "esbuild-linux-64": "0.14.25", + "esbuild-linux-arm": "0.14.25", + "esbuild-linux-arm64": "0.14.25", + "esbuild-linux-mips64le": "0.14.25", + "esbuild-linux-ppc64le": "0.14.25", + "esbuild-linux-riscv64": "0.14.25", + "esbuild-linux-s390x": "0.14.25", + "esbuild-netbsd-64": "0.14.25", + "esbuild-openbsd-64": "0.14.25", + "esbuild-sunos-64": "0.14.25", + "esbuild-windows-32": "0.14.25", + "esbuild-windows-64": "0.14.25", + "esbuild-windows-arm64": "0.14.25" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz", + "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/esbuild-android-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz", + "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8.6" + "node": ">=12" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "node_modules/esbuild-darwin-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz", + "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz", + "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/esbuild-freebsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz", + "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/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==", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz", + "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", + "node_modules/esbuild-linux-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz", + "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz", + "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz", + "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz", + "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz", + "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz", + "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz", + "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz", + "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz", + "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz", + "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz", + "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz", + "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz", + "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz", + "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", + "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.2.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1013,7 +934,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -1024,9 +945,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -1083,18 +1002,18 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -1113,24 +1032,15 @@ "node": ">=4.0" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "dependencies": { - "acorn": "^8.5.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1196,38 +1106,6 @@ "node": ">=0.10.0" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1235,9 +1113,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1247,7 +1125,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-glob/node_modules/glob-parent": { @@ -1274,12 +1152,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -1313,19 +1185,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -1340,9 +1199,9 @@ } }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "node_modules/fs.realpath": { @@ -1351,30 +1210,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1407,16 +1248,10 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1429,16 +1264,16 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "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.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -1448,24 +1283,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1475,19 +1292,10 @@ "node": ">=8" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -1509,22 +1317,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1550,27 +1342,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1601,74 +1372,12 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1681,12 +1390,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1699,15 +1402,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -1721,27 +1415,6 @@ "node": ">= 0.8.0" } }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1765,18 +1438,6 @@ "node": ">=10" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1799,40 +1460,10 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dev": true, - "dependencies": { - "mime-db": "1.50.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -1841,18 +1472,6 @@ "node": "*" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1865,30 +1484,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1898,21 +1493,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -1930,42 +1510,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1978,15 +1522,6 @@ "node": ">=6" } }, - "node_modules/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, - "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", @@ -2005,12 +1540,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -2020,22 +1549,10 @@ "node": ">=8" } }, - "node_modules/physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -2044,18 +1561,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2065,15 +1570,6 @@ "node": ">= 0.8.0" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2103,27 +1599,6 @@ } ] }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2136,40 +1611,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2227,44 +1668,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2280,27 +1683,6 @@ "node": ">=10" } }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2322,12 +1704,6 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2337,23 +1713,6 @@ "node": ">=8" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2366,15 +1725,6 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -2399,75 +1749,6 @@ "node": ">=8" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", - "dev": true, - "dependencies": { - "jest-worker": "^27.0.6", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2486,75 +1767,6 @@ "node": ">=8.0" } }, - "node_modules/ts-loader": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", - "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -2601,9 +1813,9 @@ } }, "node_modules/typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2628,140 +1840,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.64.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.1.tgz", - "integrity": "sha512-b4FHmRgaaAjP+aVOVz41a9Qa5SmkUPQ+u8FntTQ1roPHahSComB6rXnLwc976VhUY4CqTaLu5mCswuHiNhOfVw==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.2" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2777,12 +1855,6 @@ "node": ">= 8" } }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -2803,48 +1875,18 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } } }, "dependencies": { - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", - "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true - }, "@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", + "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", + "espree": "^9.3.1", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", @@ -2862,12 +1904,12 @@ } }, "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } @@ -2904,56 +1946,6 @@ "fastq": "^1.6.0" } }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "@types/eslint": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", - "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", @@ -2961,19 +1953,20 @@ "dev": true }, "@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", - "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", + "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.4.0", - "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/type-utils": "5.13.0", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -2982,56 +1975,53 @@ "tsutils": "^3.21.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", - "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", + "@typescript-eslint/parser": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", + "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "debug": "^4.3.2" } }, - "@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", + "@typescript-eslint/scope-manager": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", + "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0" } }, - "@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", + "@typescript-eslint/type-utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", + "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" + "@typescript-eslint/utils": "5.13.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", + "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", + "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -3039,210 +2029,36 @@ "tsutils": "^3.21.0" } }, - "@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "@typescript-eslint/utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", + "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" } }, - "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "@typescript-eslint/visitor-keys": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", + "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", "dev": true, "requires": { - "envinfo": "^7.7.3" + "@typescript-eslint/types": "5.13.0", + "eslint-visitor-keys": "^3.0.0" } }, - "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -3250,12 +2066,6 @@ "dev": true, "requires": {} }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3268,19 +2078,6 @@ "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -3296,12 +2093,6 @@ "color-convert": "^2.0.1" } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3321,9 +2112,9 @@ "dev": true }, "binaryen": { - "version": "102.0.0-nightly.20211028", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", - "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==" + "version": "106.0.0-nightly.20220320", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-106.0.0-nightly.20220320.tgz", + "integrity": "sha512-9Jzp9aOJ2uk2+viAiPr6+wi1BZKlxO4paTVm481RUEq3PIY63kdw78JoThrROt1s1qpCMuz0Oml6YqPJ7tep4w==" }, "brace-expansion": { "version": "1.1.11", @@ -3344,36 +2135,12 @@ "fill-range": "^7.0.1" } }, - "browserslist": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", - "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "caniuse-lite": { - "version": "1.0.30001278", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", - "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3384,23 +2151,6 @@ "supports-color": "^7.1.0" } }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3416,30 +2166,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3452,9 +2184,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -3490,48 +2222,173 @@ "esutils": "^2.0.2" } }, - "electron-to-chromium": { - "version": "1.3.891", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz", - "integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "esbuild": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz", + "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==", "dev": true, "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "esbuild-android-64": "0.14.25", + "esbuild-android-arm64": "0.14.25", + "esbuild-darwin-64": "0.14.25", + "esbuild-darwin-arm64": "0.14.25", + "esbuild-freebsd-64": "0.14.25", + "esbuild-freebsd-arm64": "0.14.25", + "esbuild-linux-32": "0.14.25", + "esbuild-linux-64": "0.14.25", + "esbuild-linux-arm": "0.14.25", + "esbuild-linux-arm64": "0.14.25", + "esbuild-linux-mips64le": "0.14.25", + "esbuild-linux-ppc64le": "0.14.25", + "esbuild-linux-riscv64": "0.14.25", + "esbuild-linux-s390x": "0.14.25", + "esbuild-netbsd-64": "0.14.25", + "esbuild-openbsd-64": "0.14.25", + "esbuild-sunos-64": "0.14.25", + "esbuild-windows-32": "0.14.25", + "esbuild-windows-64": "0.14.25", + "esbuild-windows-arm64": "0.14.25" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "esbuild-android-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz", + "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==", "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } + "optional": true }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true + "esbuild-android-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz", + "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz", + "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz", + "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz", + "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz", + "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz", + "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz", + "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz", + "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz", + "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz", + "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz", + "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz", + "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz", + "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz", + "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz", + "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz", + "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz", + "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==", + "dev": true, + "optional": true }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "esbuild-windows-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz", + "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==", + "dev": true, + "optional": true }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "esbuild-windows-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz", + "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==", + "dev": true, + "optional": true }, "escape-string-regexp": { "version": "4.0.0", @@ -3540,24 +2397,23 @@ "dev": true }, "eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", + "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.2.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3565,7 +2421,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -3576,9 +2432,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -3586,9 +2440,9 @@ }, "dependencies": { "eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -3600,12 +2454,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true } } }, @@ -3637,20 +2485,20 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { - "acorn": "^8.5.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.3.0" } }, "esquery": { @@ -3699,29 +2547,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3729,9 +2554,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -3764,12 +2589,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -3797,16 +2616,6 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -3818,9 +2627,9 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "fs.realpath": { @@ -3829,24 +2638,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -3870,66 +2667,39 @@ "is-glob": "^4.0.3" } }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "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.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "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 }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { @@ -3942,16 +2712,6 @@ "resolve-from": "^4.0.0" } }, - "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3974,21 +2734,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4010,55 +2755,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4068,12 +2770,6 @@ "argparse": "^2.0.1" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4086,12 +2782,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4102,21 +2792,6 @@ "type-check": "~0.4.0" } }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4137,18 +2812,6 @@ "yallist": "^4.0.0" } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4165,42 +2828,15 @@ "picomatch": "^2.2.3" } }, - "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "dev": true - }, - "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dev": true, - "requires": { - "mime-db": "1.50.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "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" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4213,27 +2849,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4243,15 +2858,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4266,30 +2872,6 @@ "word-wrap": "^1.2.3" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4299,12 +2881,6 @@ "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", @@ -4317,57 +2893,24 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "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 }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, "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 }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4380,57 +2923,12 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4461,23 +2959,6 @@ "queue-microtask": "^1.2.2" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -4487,24 +2968,6 @@ "lru-cache": "^6.0.0" } }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4520,32 +2983,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4555,12 +2998,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4576,44 +3013,6 @@ "has-flag": "^4.0.0" } }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", - "dev": true, - "requires": { - "jest-worker": "^27.0.6", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4629,46 +3028,6 @@ "is-number": "^7.0.0" } }, - "ts-loader": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", - "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - } - }, - "ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -4700,9 +3059,9 @@ "dev": true }, "typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true }, "uri-js": { @@ -4720,92 +3079,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.64.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.1.tgz", - "integrity": "sha512-b4FHmRgaaAjP+aVOVz41a9Qa5SmkUPQ+u8FntTQ1roPHahSComB6rXnLwc976VhUY4CqTaLu5mCswuHiNhOfVw==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.2" - } - }, - "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4815,12 +3088,6 @@ "isexe": "^2.0.0" } }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -4838,12 +3105,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true } } } diff --git a/package.json b/package.json index 1be706a1eb..5ad413229d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "assemblyscript", - "description": "Definitely not a TypeScript to WebAssembly compiler.", + "description": "A TypeScript-like language for WebAssembly.", "keywords": [ "typescript", "webassembly", @@ -10,7 +10,6 @@ ], "version": "0.0.0", "author": "Daniel Wirtz ", - "contributors": [], "license": "Apache-2.0", "homepage": "https://assemblyscript.org", "repository": { @@ -21,110 +20,77 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "102.0.0-nightly.20211028", - "long": "^5.2.0", - "source-map-support": "^0.5.20", - "ts-node": "^10.4.0" + "binaryen": "106.0.0-nightly.20220320", + "long": "^5.2.0" }, "devDependencies": { "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/parser": "^5.4.0", "diff": "^5.0.0", + "esbuild": "^0.14.1", "eslint": "^8.2.0", "glob": "^7.2.0", - "mkdirp": "^1.0.4", - "physical-cpu-count": "^2.0.0", - "ts-loader": "^9.2.6", - "ts-node": "^10.4.0", - "typescript": "~4.5.2", - "webpack": "^5.64.1", - "webpack-cli": "^4.9.1" + "typescript": "~4.5.2" }, - "type": "commonjs", - "main": "index.js", - "types": "index.d.ts", + "type": "module", "exports": { - ".": "./index.js", - "./std/portable": "./std/portable/index.js", - "./lib/loader": { - "import": "./lib/loader/index.js", - "require": "./lib/loader/umd/index.js" + ".": { + "import": "./dist/assemblyscript.js", + "types": "./dist/assemblyscript.d.ts" }, - "./lib/rtrace": { - "import": "./lib/rtrace/index.js", - "require": "./lib/rtrace/umd/index.js" + "./asc": { + "import": "./dist/asc.js", + "types": "./dist/asc.d.ts" }, - "./*": "./*.js", - "./cli/asc": "./cli/asc.js", - "./cli/transform": "./cli/transform.js", - "./cli/util/options": "./cli/util/options.js", - "./dist/assemblyscript": "./dist/assemblyscript.js", - "./dist/asc": "./dist/asc.js" + "./transform": { + "import": "./dist/transform.js", + "require": "./dist/transform.cjs", + "types": "./dist/transform.d.ts" + }, + "./binaryen": { + "import": "./lib/binaryen.js", + "types": "./lib/binaryen.d.ts" + }, + "./*": "./*" }, "bin": { - "asc": "bin/asc", - "asinit": "bin/asinit" + "asc": "./bin/asc.js", + "asinit": "./bin/asinit.js" }, "scripts": { - "build": "npm run build:bundle && npm run build:dts && npm run build:sdk", - "build:bundle": "webpack --config webpack.config.js", - "build:dts": "node scripts/build-dts && tsc --noEmit --target ESNEXT --module commonjs --experimentalDecorators tests/require/index-release", - "build:sdk": "node scripts/build-sdk", - "clean": "node scripts/clean", - "check": "npm run check:config && npm run check:require && npm run check:lint", + "check": "npm run check:config && npm run check:import && npm run lint", "check:config": "tsc --noEmit -p src --diagnostics --listFiles", - "check:require": "tsc --noEmit --target ESNEXT --module commonjs --experimentalDecorators tests/require/index", - "check:lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", - "test": "npm run test:parser && npm run test:compiler && npm run test:packages && npm run test:extension && npm run test:asconfig", - "test:parser": "node tests/parser", - "test:compiler": "node --experimental-wasi-unstable-preview1 tests/compiler", - "test:packages": "cd tests/packages && npm run test", - "test:extension": "cd tests/extension && npm run test", + "check:import": "tsc --noEmit --target ESNEXT --module es6 --experimentalDecorators tests/import/index", + "lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", + "build": "node scripts/build", + "watch": "node scripts/build --watch", + "test": "npm run test:parser && npm run test:compiler -- --parallel && npm run test:browser && npm run test:asconfig && npm run test:transform", + "test:parser": "node --enable-source-maps tests/parser", + "test:compiler": "node --enable-source-maps --experimental-wasi-unstable-preview1 --no-warnings tests/compiler", + "test:browser": "node --enable-source-maps tests/browser", "test:asconfig": "cd tests/asconfig && npm run test", - "make": "npm run clean && npm test && npm run build && npm test", - "all": "npm run check && npm run make", - "docs": "typedoc --tsconfig tsconfig-docs.json --mode modules --name \"AssemblyScript Compiler API\" --out ./docs/api --ignoreCompilerErrors --excludeNotExported --excludePrivate --excludeExternals --exclude **/std/** --includeDeclarations --readme src/README.md", - "prepare-ci": "node scripts/prepublish --prepare-for-ci", - "prepublishOnly": "node scripts/prepublish", - "postpublish": "node scripts/postpublish", - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "node bin/asc --config src/asconfig.json --target untouched", - "asbuild:optimized": "node bin/asc --config src/asconfig.json --target optimized", + "test:transform": "npm run test:transform:esm && npm run test:transform:cjs", + "test:transform:esm": "node bin/asc tests/compiler/empty --transform ./tests/transform/index.js --noEmit && node bin/asc tests/compiler/empty --transform ./tests/transform/simple.js --noEmit", + "test:transform:cjs": "node bin/asc tests/compiler/empty --transform ./tests/transform/cjs/index.js --noEmit && node bin/asc tests/compiler/empty --transform ./tests/transform/cjs/simple.js --noEmit", + "asbuild": "npm run asbuild:debug && npm run asbuild:release", + "asbuild:debug": "node bin/asc --config src/asconfig.json --target debug", + "asbuild:release": "node bin/asc --config src/asconfig.json --target release", "asbuild:rtraced": "node bin/asc --config src/asconfig.json --target rtraced", - "bootstrap": "npm run bootstrap:untouched && npm run bootstrap:optimized", - "bootstrap:untouched": "node bin/asc --config src/asconfig.json --target untouched && node bin/asc --config src/asconfig.json --target untouched-bootstrap --wasm out/assemblyscript.untouched.wasm && node bin/asc --config src/asconfig.json --target untouched-bootstrap --wasm out/assemblyscript.untouched-bootstrap.wasm && git --no-pager diff --no-index out/assemblyscript.untouched.wast out/assemblyscript.untouched-bootstrap.wast", - "bootstrap:optimized": "node bin/asc --config src/asconfig.json --target optimized && node bin/asc --config src/asconfig.json --target optimized-bootstrap --wasm out/assemblyscript.optimized.wasm && node bin/asc --config src/asconfig.json --target optimized-bootstrap --wasm out/assemblyscript.optimized-bootstrap.wasm && git --no-pager diff --no-index out/assemblyscript.optimized.wast out/assemblyscript.optimized-bootstrap.wast", - "bootstrap:rtraced": "node bin/asc --config src/asconfig.json --target rtraced && node bin/asc --config src/asconfig.json --target rtraced --wasm out/assemblyscript.rtraced.wasm", - "astest": "ts-node tests/bootstrap" + "bootstrap": "npm run bootstrap:debug && npm run bootstrap:release", + "bootstrap:debug": "node bin/asc --config src/asconfig.json --target debug && node bin/asc --config src/asconfig.json --target debug-bootstrap --wasm ./build/assemblyscript.debug.js && node bin/asc --config src/asconfig.json --target debug-bootstrap --wasm ./build/assemblyscript.debug-bootstrap.js && git --no-pager diff --no-index build/assemblyscript.debug.wast build/assemblyscript.debug-bootstrap.wast", + "bootstrap:release": "node bin/asc --config src/asconfig.json --target release && node bin/asc --config src/asconfig.json --target release-bootstrap --wasm ./build/assemblyscript.release.js && node bin/asc --config src/asconfig.json --target release-bootstrap --wasm ./build/assemblyscript.release-bootstrap.js && git --no-pager diff --no-index build/assemblyscript.release.wast build/assemblyscript.release-bootstrap.wast", + "bootstrap:rtraced": "node bin/asc --config src/asconfig.json --target rtraced && node bin/asc --config src/asconfig.json --target rtraced --wasm ./build/assemblyscript.rtraced.js" }, - "releaseFiles": [ - "lib/loader/index.d.ts", - "lib/loader/index.js", - "lib/loader/package.json", - "lib/loader/umd/index.d.ts", - "lib/loader/umd/index.js", - "lib/loader/umd/package.json", - "lib/loader/README.md", - "lib/rtrace/index.d.ts", - "lib/rtrace/index.js", - "lib/rtrace/package.json", - "lib/rtrace/umd/index.d.ts", - "lib/rtrace/umd/index.js", - "lib/rtrace/umd/package.json", - "lib/rtrace/README.md", + "files": [ "bin/", - "cli/", "dist/", - "index.d.ts", - "index.js", - "LICENSE", - "NOTICE", - "package.json", - "package-lock.json", - "README.md", "std/", - "tsconfig-base.json" + "util/", + "lib/binaryen.js", + "lib/binaryen.d.ts", + "tsconfig-base.json", + "NOTICE" ], "funding": { "type": "opencollective", diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000000..63738b199f --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,21 @@ +Scripts +======= + +Various scripts for development purposes. + +### Default target + +| Command | Description +|-------------------|------------------------------------------- +| npm install | Install required dependencies +| npm run build | Builds the compiler +| npm run watch | Builds the compiler and watches for changes +| npm run check | Performs sanity checks on code style etc. +| npm test | Runs the test suite + +### WebAssembly target + +| Command | Description +|-------------------|------------------------------------------- +| npm run asbuild | Compiles the compiler to WebAssembly +| npm run bootstrap | Bootstraps the compiler to WebAssembly diff --git a/scripts/build-diagnostics.js b/scripts/build-diagnostics.js deleted file mode 100644 index 3253bb13d2..0000000000 --- a/scripts/build-diagnostics.js +++ /dev/null @@ -1,42 +0,0 @@ -var fs = require("fs"); - -var messages = require(__dirname + "/../src/diagnosticMessages.json"); - -var header = `/** - * @fileoverview Generated from diagnosticsMessages.json. Do not edit. - * @license Apache-2.0 - */ - -`.replace(/\r\n/g, "\n"); - -var sb = [ header ]; - -function makeKey(text) { - return text.replace(/[^\w]+/g, "_").replace(/_+$/, ""); -} - -sb.push("/** Enum of available diagnostic codes. */\n"); -sb.push("export enum DiagnosticCode {\n"); - -var first = true; -Object.keys(messages).forEach(text => { - var key = makeKey(text); - if (first) - first = false; - else { - sb.push(",\n"); - } - sb.push(" " + key + " = " + messages[text]); -}); - -sb.push("\n}\n\n"); -sb.push("/** Translates a diagnostic code to its respective string. */\n"); -sb.push("export function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n"); - -Object.keys(messages).forEach(text => { - sb.push(" case " + messages[text] + ": return " + JSON.stringify(text) + ";\n"); -}); - -sb.push(" default: return \"\";\n }\n}\n"); - -fs.writeFileSync(__dirname + "/../src/diagnosticMessages.generated.ts", sb.join(""), { encoding: "utf8" }); diff --git a/scripts/build-dts.js b/scripts/build-dts.js index f0d893a1c1..477724d578 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -1,13 +1,17 @@ +import fs from "fs"; +import glob from "glob"; +import os from "os"; +import pathUtil from "path"; +import ts from "typescript"; +import stream from "stream"; +import util from "util"; +import { fileURLToPath } from 'url'; + +const __dirname = pathUtil.dirname(fileURLToPath(import.meta.url)); + // © 2015-2019 SitePen, Inc. New BSD License. // see: https://github.com/SitePen/dts-generator -(function() { - const fs = require("fs"); - const glob = require("glob"); - const mkdirp = require("mkdirp"); - const os = require("os"); - const pathUtil = require("path"); - const ts = require("typescript"); - +const generate = (function() { // declare some constants so we don't have magic integers without explanation const DTSLEN = '.d.ts'.length; const filenameToMid = (function () { @@ -209,7 +213,7 @@ verboseMessage('exclude:'); options.exclude.forEach(name => { verboseMessage(' ' + name); }); } - if (!options.stdout) mkdirp.sync(pathUtil.dirname(options.out)); + if (!options.stdout) fs.mkdirSync(pathUtil.dirname(options.out), { recursive: true }); /* node.js typings are missing the optional mode in createWriteStream options and therefore * in TS 1.6 the strict object literal checking is throwing, therefore a hammer to the nut */ const output = options.stdout || fs.createWriteStream(options.out, { mode: parseInt('644', 8) }); @@ -402,14 +406,9 @@ } } } - exports.default = generate; + return generate; })(); -const path = require("path"); -const fs = require("fs"); -const stream = require("stream"); -const util = require("util"); - function OutputStream(options) { stream.Writable.call(this, options); this.chunks = []; @@ -426,82 +425,158 @@ OutputStream.prototype.toString = function () { return this.toBuffer().toString("utf8"); }; -const stdout = new OutputStream(); -stdout.write(`declare module 'assemblyscript' { - export * from 'assemblyscript/src/index'; +function transformTypes(sourceFile) { + var numReplaced = 0; + console.log("transforming:"); + var result = ts.transform(sourceFile, [ + function (context) { + const visit = node => { + node = ts.visitEachChild(node, visit, context); + if (ts.isTypeNode(node)) { + const name = node.getText(sourceFile); + switch (name) { + // this is wrong, but works + case "bool": ++numReplaced; return ts.createIdentifier("boolean"); + default: if (!/^(?:Binaryen|Relooper)/.test(name)) break; + case "i8": case "i16": case "i32": case "isize": + case "u8": case "u16": case "u32": case "usize": + case "f32": case "f64": ++numReplaced; return ts.createIdentifier("number"); + } + } + return node; + }; + return node => ts.visitNode(node, visit); + } + ]); + console.log(" replaced " + numReplaced + " AS types with TS types"); + return result; } -`); -module.exports.default({ - project: path.resolve(__dirname, "..", "src"), - prefix: "assemblyscript", - exclude: [ - "glue/**", - ], - verbose: true, - sendMessage: console.log, - stdout: stdout -}); +const prefix = "types:assemblyscript"; -stdout.write("\n"); +function generateSrc() { + const stdout = new OutputStream(); -module.exports.default({ - project: path.resolve(__dirname, "..", "std/assembly/shared"), - prefix: "assemblyscript/std/assembly/shared", - exclude: [], - verbose: true, - sendMessage: console.log, - stdout: stdout -}); + generate({ + project: pathUtil.resolve(__dirname, "..", "src"), + prefix, + exclude: [ + "glue/**", + ], + verbose: true, + sendMessage: console.log, + stdout: stdout + }); -stdout.write("\n"); + stdout.write("\n"); -module.exports.default({ - project: path.resolve(__dirname, "..", "src/glue"), - prefix: "assemblyscript/src/glue", - exclude: [ - "js/index.ts", - "js/node.d.ts" - ], - verbose: true, - sendMessage: console.log, - stdout: stdout -}); + generate({ + project: pathUtil.resolve(__dirname, "..", "std", "assembly", "shared"), + prefix: prefix + "/std/assembly/shared", + exclude: [], + verbose: true, + sendMessage: console.log, + stdout: stdout + }); -var source = stdout.toString().replace(/\/\/\/ ]*>\r?\n/g, ""); + stdout.write("\n"); -const ts = require("typescript"); -const sourceFile = ts.createSourceFile("assemblyscript.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); + generate({ + project: pathUtil.resolve(__dirname, "..", "src", "glue"), + prefix: prefix + "/src/glue", + exclude: [ + "js/index.ts", + "js/node.d.ts" + ], + verbose: true, + sendMessage: console.log, + stdout: stdout + }); -console.log("transforming:"); -var numReplaced = 0; -const result = ts.transform(sourceFile, [ - function (context) { - const visit = node => { - node = ts.visitEachChild(node, visit, context); - if (ts.isTypeNode(node)) { - const name = node.getText(sourceFile); - switch (name) { - // this is wrong, but works - case "bool": ++numReplaced; return ts.createIdentifier("boolean"); - default: if (!/^(?:Binaryen|Relooper)/.test(name)) break; - case "i8": case "i16": case "i32": case "isize": - case "u8": case "u16": case "u32": case "usize": - case "f32": case "f64": ++numReplaced; return ts.createIdentifier("number"); - } + const source = stdout.toString().replace(/\/\/\/ ]*>\r?\n/g, ""); + const sourceFile = ts.createSourceFile("assemblyscript.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); + const result = transformTypes(sourceFile); + if (!fs.existsSync(pathUtil.join(__dirname, "..", "dist"))) { + fs.mkdirSync(pathUtil.join(__dirname, "..", "dist")); + } + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "assemblyscript.generated.d.ts"), + ts.createPrinter().printFile(result.transformed[0]) + ); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "assemblyscript.d.ts"), + [ `/// \n`, + `export * from "${prefix}/src/index";\n`, + `import * as assemblyscript from "${prefix}/src/index";\n`, + `export default assemblyscript;\n` + ].join("") + ); +} + +function generateCli() { + const stdout = new OutputStream(); + + generate({ + baseDir: pathUtil.resolve(__dirname, ".."), + files: [ + pathUtil.resolve(__dirname, "..", "cli", "index.d.ts") + ], + externs: [ + "./assemblyscript.generated.d.ts" + ], + prefix, + verbose: true, + sendMessage: console.log, + stdout: stdout, + resolveModuleImport: ({ importedModuleId, currentModuleId }) => { + if (currentModuleId == "cli/index") { + if (importedModuleId == "../src") return prefix + "/src/index"; } - return node; - }; - return node => ts.visitNode(node, visit); + return null; + }, + }); + + const source = stdout.toString(); + const sourceFile = ts.createSourceFile("asc.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); + const result = transformTypes(sourceFile); + if (!fs.existsSync(pathUtil.join(__dirname, "..", "dist"))) { + fs.mkdirSync(pathUtil.join(__dirname, "..", "dist")); } -]); -console.log(" replaced " + numReplaced + " AS types with JS types"); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "asc.generated.d.ts"), + ts.createPrinter().printFile(result.transformed[0]) + ); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "asc.d.ts"), + [ `/// \n`, + `export * from "${prefix}/cli/index";\n`, + `import * as asc from "${prefix}/cli/index";\n`, + `export default asc;\n` + ].join("") + ); +} -if (!fs.existsSync(path.join(__dirname, "..", "dist"))) { - fs.mkdirSync(path.join(__dirname, "..", "dist")); +function generateTransform() { + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "transform.js"), + [ + `export function Transform() { /* stub */ }\n` + ].join("") + ); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "transform.cjs"), + [ + `module.exports = function Transform() { /* stub */ }\n` + ].join("") + ); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "transform.d.ts"), + [ + `export { Transform } from "./asc";\n` + ].join("") + ); } -fs.writeFileSync( - path.resolve(__dirname, "..", "dist", "assemblyscript.d.ts"), - ts.createPrinter().printFile(result.transformed[0]), - "utf8" -); + +generateSrc(); +generateCli(); +generateTransform(); diff --git a/scripts/build-sdk.js b/scripts/build-sdk.js deleted file mode 100644 index 6ab50e1099..0000000000 --- a/scripts/build-sdk.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const pkg = require("../package-lock.json"); - -fs.readFile(path.join(__dirname, "..", "lib", "sdk", "index.js"), "utf8", function(err, data) { - if (err) throw err; - data = data - .replace(/BINARYEN_VERSION = "nightly"/, "BINARYEN_VERSION = " + JSON.stringify(pkg.dependencies.binaryen.version)) - .replace(/LONG_VERSION = "latest"/, "LONG_VERSION = " + JSON.stringify(pkg.dependencies.long.version)) - .replace(/ASSEMBLYSCRIPT_VERSION = "latest"/, "ASSEMBLYSCRIPT_VERSION = " + JSON.stringify(pkg.version)); - fs.writeFile(path.join(__dirname, "..", "dist", "sdk.js"), data, function(err) { - if (err) throw err; - }); -}); diff --git a/scripts/build-web.js b/scripts/build-web.js new file mode 100644 index 0000000000..fded04b86b --- /dev/null +++ b/scripts/build-web.js @@ -0,0 +1,53 @@ +import path from "path"; +import fs from "fs"; +import { createRequire } from "module"; +import { fileURLToPath } from "url"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); +const pkg = require("../package-lock.json"); + +const mainVersion = pkg.version; +const binaryenVersion = pkg.dependencies.binaryen.version; +const longVersion = pkg.dependencies.long.version; + +const distUrl = mainVersion === "0.0.0" ? `../dist/` : `https://cdn.jsdelivr.net/npm/assemblyscript@${mainVersion}/dist/`; +const binaryenUrl = `https://cdn.jsdelivr.net/npm/binaryen@${binaryenVersion}/index.js`; +const longUrl = `https://cdn.jsdelivr.net/npm/long@${longVersion}/index.js`; + +fs.writeFileSync(path.join(dirname, "..", "dist", "web.html"), ` + + +`); diff --git a/scripts/build.js b/scripts/build.js index 9e6d573d49..986a41a664 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,6 +1,277 @@ -const webpack = require("webpack"); -const config = require("../webpack.config.js"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import childProcess from "child_process"; +import esbuild from "esbuild"; +import glob from "glob"; +import { createRequire } from "module"; +import { stdoutColors } from "../util/terminal.js"; -webpack(config, err => { - if (err) throw err; +const require = createRequire(import.meta.url); +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const watch = process.argv[2] === "--watch"; + +function prelude(name) { + return [ + "/**\n", + " * @license\n", + " * ", name, "\n", + " * Copyright ", new Date().getFullYear().toString(), " Daniel Wirtz / The AssemblyScript Authors\n", + " * SPDX-License-Identifier: Apache-2.0\n", + " */" + ].join(""); +} + +// Report what's going on + +function time() { + return new Date().toISOString(); +} + +function reportPlugin(name) { + return { + name: "reporter", + setup(build) { + let startTime = 0; + build.onStart(() => { + console.log(`${time()} - ${name} - Starting new build ...`); + startTime = Date.now(); + }); + build.onEnd(({ errors, warnings }) => { + const duration = Date.now() - startTime; + if (errors.length) { + console.log(`${time()} - ${name} - ${stdoutColors.red("ERROR")} (${errors.length} errors, ${warnings.length} warnings, ${duration} ms)`); + } else { + console.log(`${time()} - ${name} - ${stdoutColors.green("SUCCESS")} (${warnings.length} warnings, ${duration} ms)`); + } + }); + } + }; +} + +// Standard library integration + +function bundleFile(filename) { + return fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n"); +} + +const stdlibPlugin = { + name: "stdlib", + setup(build) { + build.onResolve({ filter: /\bindex\.generated\.js$/ }, args => { + return { + path: path.join(args.resolveDir, args.path), + watchFiles: glob.sync(path.join(dirname, "..", "std", "assembly") + "/**/*.ts") + .concat([ + path.join(dirname, "..", "package.json"), + path.join(dirname, "..", "cli", "options.json"), + path.join(dirname, "..", "std", "portable", "index.d.ts") + ]) + }; + }); + build.onLoad({ filter: /\bindex\.generated\.js$/ }, args => { + const out = [ + `// GENERATED FILE. DO NOT EDIT.\n\n` + ]; + const version = require("../package.json").version; + out.push( + `export const version = ${JSON.stringify(version)};\n` + ); + const options = require("../cli/options.json"); + out.push( + `export const options = ${JSON.stringify(options, null, 2)};\n` + ); + out.push( + `export const libraryPrefix = "~lib/";\n` + ); + const libraryDir = path.join(dirname, "..", "std", "assembly"); + const libraryFiles = {}; + for (const file of glob.sync("**/!(*.d).ts", { cwd: libraryDir })) { + libraryFiles[file.replace(/\.ts$/, "")] = bundleFile(path.join(libraryDir, file)); + } + out.push( + `export const libraryFiles = ${JSON.stringify(libraryFiles, null, 2)};\n` + ); + const definitionFiles = { + assembly: bundleFile(path.join(dirname, "..", "std", "assembly", "index.d.ts")), + portable: bundleFile(path.join(dirname, "..", "std", "portable", "index.d.ts")) + }; + out.push( + `export const definitionFiles = ${JSON.stringify(definitionFiles, null, 2)};\n` + ); + const generated = out.join(""); + fs.writeFileSync(path.join(dirname, "..", "cli", "index.generated.js"), generated); + return { + contents: generated, + loader: "js" + }; + }); + } +}; + +// Diagnostic messages integration + +const diagnosticsPlugin = { + name: "diagnostics", + setup(build) { + build.onResolve({ filter: /\bdiagnosticMessages\.generated$/ }, args => { + return { + path: path.join(args.resolveDir, args.path), + watchFiles: [ + path.join(dirname, "..", "src", "diagnosticMessages.json") + ] + }; + }); + build.onLoad({ filter: /\bdiagnosticMessages\.generated$/ }, args => { + const out = [ + `// GENERATED FILE. DO NOT EDIT.\n\n` + ]; + + function makeKey(text) { + return text.replace(/[^\w]+/g, "_").replace(/_+$/, ""); + } + + out.push("/** Enum of available diagnostic codes. */\n"); + out.push("export enum DiagnosticCode {\n"); + + var first = true; + const messages = JSON.parse(fs.readFileSync(path.join(dirname, "..", "src", "diagnosticMessages.json"))); + Object.keys(messages).forEach(text => { + var key = makeKey(text); + if (first) + first = false; + else { + out.push(",\n"); + } + out.push(" " + key + " = " + messages[text]); + }); + + out.push("\n}\n\n"); + out.push("/** Translates a diagnostic code to its respective string. */\n"); + out.push("export function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n"); + + Object.keys(messages).forEach(text => { + out.push(" case " + messages[text] + ": return " + JSON.stringify(text) + ";\n"); + }); + + out.push(" default: return \"\";\n }\n}\n"); + + const generated = out.join(""); + fs.writeFileSync(path.join(dirname, "..", "src", "diagnosticMessages.generated.ts"), generated); + return { + contents: generated, + loader: "ts" + }; + }); + } +}; + +// Web template integration + +const webPlugin = { + name: "web", + setup(build) { + build.onEnd(() => { + const startTime = Date.now(); + const stdout = []; + console.log(`${time()} - ${"web"} - Starting new build ...`); + childProcess.spawn("node", [ "./build-web.js" ], { + cwd: dirname, + stdio: "pipe" + }).on("data", data => { + stdout.push(data.toString()); + }).on("error", err => { + const duration = Date.now() - startTime; + console.log(stdout.join("")); + console.log(`${time()} - ${"web"} - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`); + }).on("close", code => { + if (code) return; + const duration = Date.now() - startTime; + console.log(`${time()} - ${"web"} - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`); + }); + }); + } +}; + +// Build compiler and CLI + +const common = { + target: "esnext", + platform: "node", + format: "esm", + external: [ + "assemblyscript", + "binaryen", + "long" + ], + legalComments: "none", + bundle: true, + sourcemap: true, + treeShaking: true, + minify: true, + watch, + incremental: watch +}; + +const srcBuild = esbuild.build({ + entryPoints: [ "./src/index.ts" ], + tsconfig: "./src/tsconfig.json", + outfile: "./dist/assemblyscript.js", + banner: { js: prelude("The AssemblyScript compiler") }, + plugins: [ diagnosticsPlugin, reportPlugin("src") ], + ...common +}); + +const cliBuild = esbuild.build({ + entryPoints: [ "./cli/index.js" ], + tsconfig: "./cli/tsconfig.json", + outfile: "./dist/asc.js", + banner: { js: prelude("The AssemblyScript frontend") }, + plugins: [ stdlibPlugin, webPlugin, reportPlugin("cli") ], + ...common }); + +// Optionally build definitions (takes a while) + +var buildingDefinitions = false; + +function buildDefinitions() { + const startTime = Date.now(); + const stdout = []; + console.log(`${time()} - ${"dts"} - Starting new build ...`); + buildingDefinitions = true; + childProcess.spawn("node", [ "./build-dts.js" ], { + cwd: dirname, + stdio: "pipe" + }).on("data", data => { + stdout.push(data.toString()); + }).on("error", err => { + buildingDefinitions = false; + const duration = Date.now() - startTime; + console.log(stdout.join("")); + console.log(`${time()} - ${"dts"} - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`); + }).on("close", code => { + buildingDefinitions = false; + if (code) return; + const duration = Date.now() - startTime; + console.log(`${time()} - ${"dts"} - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`); + }); +} + +if (watch) { + console.log("Watching for changes. Press RETURN to rebuild definitions.\n"); + process.stdin.on("data", data => { + if (data == "\r\n" || data == "\n") { + process.stdout.write("\u001b[1A"); + if (!buildingDefinitions) buildDefinitions(); + } + }); +} + +console.log(`src : Compiler as a library +cli : Compiler frontend asc +dts : TS definition bundles +web : Example web template\n`); + +await Promise.all([ srcBuild, cliBuild ]); +buildDefinitions(); diff --git a/scripts/clean.js b/scripts/clean.js deleted file mode 100644 index 956dea952e..0000000000 --- a/scripts/clean.js +++ /dev/null @@ -1,16 +0,0 @@ -var fs = require("fs"); -var glob = require("glob"); - -glob("*", { cwd: __dirname + "/../dist" }, (err, matches) => { - if (err) - console.log("Failed to list files in 'dist/': " + err.message); - else - matches.forEach(match => { - fs.unlink(__dirname + "/../dist/" + match, err => { - if (err) - console.log("Failed to delete 'dist/" + match + "': " + err.message); - else - console.log("Deleted 'dist/" + match + "'"); - }); - }); -}); diff --git a/scripts/postpublish-files.json b/scripts/postpublish-files.json deleted file mode 100644 index c2a9b27bf0..0000000000 --- a/scripts/postpublish-files.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "package.json", - "index.js", - "index.d.ts" -] diff --git a/scripts/postpublish.js b/scripts/postpublish.js deleted file mode 100644 index 4c0ddb5fe9..0000000000 --- a/scripts/postpublish.js +++ /dev/null @@ -1,22 +0,0 @@ -// Reconfigures the repository after publishing - -const fs = require("fs"); -const path = require("path"); -const devFiles = require("./postpublish-files.json"); - -console.log("Restoring development files ..."); - -devFiles.forEach(originalName => { - const backupName = originalName + ".backup"; - const backupPath = path.join(__dirname, "..", backupName); - if (!fs.existsSync(backupPath)) { - console.log("- " + backupName + " does not exist"); - } else { - console.log("- " + backupName + " -> " + originalName); - fs.copyFileSync( - backupPath, - path.join(__dirname, "..", originalName) - ); - fs.unlinkSync(backupPath); - } -}); diff --git a/scripts/prepublish.js b/scripts/prepublish.js index 62217dbf54..84f7a19678 100644 --- a/scripts/prepublish.js +++ b/scripts/prepublish.js @@ -1,69 +1,32 @@ -// Reconfigures the repository before publishing - -const fs = require("fs"); -const path = require("path"); -const pkg = require("../package.json"); -const devFiles = require("./postpublish-files.json"); - -var isCI = process.argv[2] === '--prepare-for-ci'; - -if (!isCI) { - if (!pkg.releaseFiles) { - console.log("Package has already been updated"); - return; - } - - console.log("Backing up development files ..."); - - devFiles.forEach(originalName => { - const backupName = originalName + ".backup"; - console.log("- " + originalName + " -> " + backupName); - fs.copyFileSync( - path.join(__dirname, "..", originalName), - path.join(__dirname, "..", backupName) - ); - }); - - console.log("Updating package.json ..."); - - // Stuff we don't need in release - Object.keys(pkg.devDependencies).forEach(dep => delete pkg.dependencies[dep]); - delete pkg.devDependencies; +import fs from "fs"; +import path from "path"; +import { createRequire } from "module"; +import { fileURLToPath } from "url"; + +const require = createRequire(import.meta.url); +const dirname = path.dirname(fileURLToPath(import.meta.url)); + +const reset = process.argv[2] === "--reset"; + +if (reset) { + fs.copyFileSync( + path.join(dirname, "..", "package.json.backup"), + path.join(dirname, "..", "package.json") + ); + fs.unlinkSync( + path.join(dirname, "..", "package.json.backup") + ); +} else { + const pkg = require("../package.json"); + if (!pkg.scripts) throw Error("already modified"); delete pkg.scripts; - - // Stuff we want in release - pkg.files = pkg.releaseFiles; - delete pkg.releaseFiles; - - // Copy contributors from NOTICE to .contributors - const notice = fs.readFileSync(path.join(__dirname, "..", "NOTICE"), "utf8"); - const noticeRange = ["dcode.io>", "Portions of this software"]; - const posStart = notice.indexOf(noticeRange[0]); - const posEnd = notice.indexOf(noticeRange[1], posStart); - if (posStart < 0 || posEnd < 0) throw Error("unexpected NOTICE format"); - pkg.contributors = []; - for (let entry of notice.substring(posStart + noticeRange[0].length, posEnd).trim().matchAll(/^\* ([^<\n]+(?: <([^>\n]+)>))/mg)) { - pkg.contributors.push(entry[1]); - } - if (!pkg.contributors.length) throw Error("missing contributors"); - fs.writeFileSync(path.join(__dirname, "..", "package.json"), [ - JSON.stringify(pkg, null, 2), '\n' - ].join("")); -} - -console.log("Copying index.release.js -> index.js ..."); -fs.copyFileSync( - path.join(__dirname, "..", "index.release.js"), - path.join(__dirname, "..", "index.js") -); - -console.log("Copying index.release.d.ts -> index.d.ts ..."); -fs.copyFileSync( - path.join(__dirname, "..", "index.release.d.ts"), - path.join(__dirname, "..", "index.d.ts") -); - -if (!isCI) { - // We are going to use these immediately, so, to be sure: - setTimeout(() => console.log("OK"), 2000); + delete pkg.devDependencies; + fs.copyFileSync( + path.join(dirname, "..", "package.json"), + path.join(dirname, "..", "package.json.backup") + ); + fs.writeFileSync( + path.join(dirname, "..", "package.json"), + JSON.stringify(pkg, null, 2) + ); } diff --git a/scripts/update-constants.js b/scripts/update-constants.js index 5f94354372..8ef7161811 100644 --- a/scripts/update-constants.js +++ b/scripts/update-constants.js @@ -1,14 +1,15 @@ // Updates the Binaryen constants in src/module.ts -const fs = require("fs"); -const path = require("path"); -const binaryen = require("binaryen"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import binaryen from "../lib/binaryen.js"; -const srcfile = path.join(__dirname, "..", "src", "module.ts"); -var src = fs.readFileSync(srcfile, "utf8"); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); -binaryen.ready.then(() => { - src = src.replace(/(?:enum|namespace) (\w+) \{([^}]*)\}/g, function($0) { +const srcfile = path.join(__dirname, "..", "src", "module.ts"); +var src = fs.readFileSync(srcfile, "utf8") + .replace(/(?:enum|namespace) (\w+) \{([^}]*)\}/g, function($0) { return $0.replace(/(\w+)[ ]+=[ ]+([^,;\n]+)/g, function($0, key, val) { var match = val.match(/\b(_(?:Binaryen|Relooper|ExpressionRunner)\w+)\b/); if (match) { @@ -21,5 +22,4 @@ binaryen.ready.then(() => { return $0; }); }); - fs.writeFileSync(srcfile, src, "utf8"); -}); +fs.writeFileSync(srcfile, src, "utf8"); diff --git a/snap/README.md b/snap/README.md deleted file mode 100644 index d7245ed05f..0000000000 --- a/snap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Snaps are containerised software packages that are simple to create and install on all major Linux systems without modification. [Learn more](https://docs.snapcraft.io). - -[![Snap Status](https://snapcraft.io/assemblyscript/badge.svg)](https://snapcraft.io/assemblyscript) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index d4655e495d..0000000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: assemblyscript -summary: A TypeScript-like language for WebAssembly. -description: | - AssemblyScript compiles a variant of TypeScript to WebAssembly using Binaryen. - - See the AssemblyScript website for documentation: - https://www.assemblyscript.org -type: app -icon: media/icon.svg -version: git -grade: stable -confinement: strict -apps: - asc: - command: asc - asinit: - command: asinit -parts: - assemblyscript: - source: . - plugin: npm - npm-node-version: 16.9.1 -architectures: - - build-on: amd64 - run-on: [amd64, armhf, arm64, i386] diff --git a/src/README.md b/src/README.md index 60a15098e9..65eb7e260e 100644 --- a/src/README.md +++ b/src/README.md @@ -11,30 +11,27 @@ Architecture Usage ----- -Note that using the compiler as a library requires awaiting Binaryen ready state, like so: - ```js -const binaryen = require("binaryen"); -const assemblyscript = require("assemblyscript"); -binaryen.ready.then(() => { - // do something with assemblyscript -}); +import assemblyscript from "assemblyscript"; +... ``` Building -------- -Note that building the compiler is not necessary if you only want to run it (in development). If not built, `ts-node` is used to run the sources directly. - ### Building to JavaScript -To build the compiler to a JavaScript bundle, run: +To build the compiler, run: ```sh npm run build ``` -Uses webpack under the hood, building to `dist/`. +The rebuild automatically when there are changes, do: + +```sh +npm run watch +``` ### Building to WebAssembly @@ -44,16 +41,16 @@ To build the compiler to a WebAssembly binary, run: npm run bootstrap ``` -Uses the AssemblyScript compiler compiled to JavaScript to compile itself to WebAssembly, building to WebAssembly again using itself compiled to WebAssembly. Builds to `out/`. Performs a `git diff` to make sure that both the initial and the final artifacts are the same. Note that this builds the compiler as a library, while the `asc` frontend setting it up and feeding it source files is JavaScript for now. +Uses the AssemblyScript compiler compiled to JavaScript to compile itself to WebAssembly, building to WebAssembly again using itself compiled to WebAssembly. Builds to `build/`. Performs a `git diff` to make sure that both the initial and the final artifacts are the same. Note that this builds the compiler as a library, while the `asc` frontend setting it up and feeding it source files is JavaScript for now. Running `asc` with the WebAssembly variant: ```ts -asc [options...] --wasm out/assemblyscript.optimized-bootstrap.wasm +asc [options...] --wasm build/assemblyscript.release-bootstrap.wasm ``` Running the compiler tests with the WebAssembly variant: ```ts -npm run test:compiler -- --wasm out/assemblyscript.optimized-bootstrap.wasm +npm run test:compiler -- --wasm build/assemblyscript.release-bootstrap.wasm ``` diff --git a/src/asconfig.json b/src/asconfig.json index 2335eca294..8618a21c41 100644 --- a/src/asconfig.json +++ b/src/asconfig.json @@ -1,47 +1,45 @@ { "entries": [ "./glue/wasm/index.ts", - "./index.ts" + "./index-wasm.ts" ], "options": { - "explicitStart": true, + "exportStart": "_initialize", "exportRuntime": true, "initialMemory": 768, "runtime": "incremental", - "measure": true + "bindings": [ "esm" ], + "stats": true }, "targets": { - "untouched": { - "binaryFile": "../out/assemblyscript.untouched.wasm", - "textFile": "../out/assemblyscript.untouched.wast", - "tsdFile": "../out/assemblyscript.d.ts", - "debug": true + "debug": { + "outFile": "../build/assemblyscript.debug.wasm", + "textFile": "../build/assemblyscript.debug.wast", + "debug": true, + "sourceMap": true }, - "optimized": { - "binaryFile": "../out/assemblyscript.optimized.wasm", - "textFile": "../out/assemblyscript.optimized.wast", - "tsdFile": "../out/assemblyscript.d.ts", + "release": { + "outFile": "../build/assemblyscript.release.wasm", + "textFile": "../build/assemblyscript.release.wast", "optimizeLevel": 3, "shrinkLevel": 0 }, "rtraced": { - "binaryFile": "../out/assemblyscript.rtraced.wasm", - "textFile": "../out/assemblyscript.rtraced.wast", - "tsdFile": "../out/assemblyscript.d.ts", + "outFile": "../build/assemblyscript.rtraced.wasm", + "textFile": "../build/assemblyscript.rtraced.wast", "debug": true, "use": "ASC_RTRACE=1", "runPasses": [] }, - "untouched-bootstrap": { - "binaryFile": "../out/assemblyscript.untouched-bootstrap.wasm", - "textFile": "../out/assemblyscript.untouched-bootstrap.wast", - "tsdFile": "../out/assemblyscript.d.ts", - "debug": true + "debug-bootstrap": { + "outFile": "../build/assemblyscript.debug-bootstrap.wasm", + "textFile": "../build/assemblyscript.debug-bootstrap.wast", + "debug": true, + "sourceMap": true }, - "optimized-bootstrap": { - "binaryFile": "../out/assemblyscript.optimized-bootstrap.wasm", - "textFile": "../out/assemblyscript.optimized-bootstrap.wast", - "tsdFile": "../out/assemblyscript.d.ts", + "release-bootstrap": { + "outFile": "../build/assemblyscript.release-bootstrap.wasm", + "textFile": "../build/assemblyscript.release-bootstrap.wast", "optimizeLevel": 3, "shrinkLevel": 0 } diff --git a/src/ast.ts b/src/ast.ts index 3f725bd24c..c5a2427d1e 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -29,8 +29,7 @@ import { import { normalizePath, resolvePath, - CharCode, - isAlphaOrDecimal + CharCode } from "./util"; import { @@ -100,6 +99,7 @@ export enum NodeKind { VARIABLE, VOID, WHILE, + MODULE, // declaration statements CLASSDECLARATION, @@ -713,6 +713,14 @@ export abstract class Node { return new TypeDeclaration(name, decorators, flags, typeParameters, type, range); } + static createModuleDeclaration( + name: string, + flags: CommonFlags, + range: Range + ): ModuleDeclaration { + return new ModuleDeclaration(name, flags, range); + } + static createVariableStatement( decorators: DecoratorNode[] | null, declarations: VariableDeclaration[], @@ -825,7 +833,7 @@ export abstract class TypeNode extends Node { let namedTypeNode = changetype(this); // TS if (!namedTypeNode.name.next) { let typeArgumentNodes = namedTypeNode.typeArguments; - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { for (let i = 0, k = typeArgumentNodes.length; i < k; ++i) { if (typeArgumentNodes[i].hasGenericComponent(typeParameterNodes)) return true; } @@ -844,7 +852,7 @@ export abstract class TypeNode extends Node { } if (functionTypeNode.returnType.hasGenericComponent(typeParameterNodes)) return true; let explicitThisType = functionTypeNode.explicitThisType; - if (explicitThisType !== null && explicitThisType.hasGenericComponent(typeParameterNodes)) return true; + if (explicitThisType && explicitThisType.hasGenericComponent(typeParameterNodes)) return true; } else { assert(false); } @@ -884,7 +892,7 @@ export class NamedTypeNode extends TypeNode { /** Checks if this type node has type arguments. */ get hasTypeArguments(): bool { var typeArguments = this.typeArguments; - return typeArguments !== null && typeArguments.length > 0; + return typeArguments != null && typeArguments.length > 0; } } @@ -976,6 +984,7 @@ export enum DecoratorKind { FINAL, INLINE, EXTERNAL, + EXTERNAL_JS, BUILTIN, LAZY, UNSAFE @@ -1043,6 +1052,13 @@ export namespace DecoratorKind { break; } } + } else if (nameStr == "external") { + switch (propStr.charCodeAt(0)) { + case CharCode.j: { + if (propStr == "js") return DecoratorKind.EXTERNAL_JS; + break; + } + } } } } @@ -1340,7 +1356,7 @@ export class NewExpression extends Expression { get typeArgumentsRange(): Range { var typeArguments = this.typeArguments; var numTypeArguments: i32; - if (typeArguments !== null && (numTypeArguments = typeArguments.length) > 0) { + if (typeArguments && (numTypeArguments = typeArguments.length) > 0) { return Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); } return this.typeName.range; @@ -1694,6 +1710,8 @@ export abstract class DeclarationStatement extends Statement { ) { super(kind, range); } + /** Overridden module name from preceeding `module` statement. */ + public overriddenModuleName: string | null = null; /** Tests if this node has the specified flag or flags. */ is(flag: CommonFlags): bool { return (this.flags & flag) == flag; } @@ -2106,7 +2124,7 @@ export class ImportStatement extends Statement { } else { // absolute in library if (!normalizedPath.startsWith(LIBRARY_PREFIX)) normalizedPath = LIBRARY_PREFIX + normalizedPath; } - this.internalPath = normalizedPath; + this.internalPath = mangleInternalPath(normalizedPath); } /** Internal path being referenced. */ @@ -2249,6 +2267,20 @@ export class TryStatement extends Statement { } } +/** Represents a `module` statement. */ +export class ModuleDeclaration extends Statement { + constructor( + /** Module name. */ + public moduleName: string, + /** Common flags indicating specific traits. */ + public flags: CommonFlags, + /** Source range. */ + range: Range + ) { + super(NodeKind.MODULE, range); + } +} + /** Represents a `type` declaration. */ export class TypeDeclaration extends DeclarationStatement { constructor( @@ -2342,19 +2374,11 @@ export function findDecorator(kind: DecoratorKind, decorators: DecoratorNode[] | /** Mangles an external to an internal path. */ export function mangleInternalPath(path: string): string { - var pos = path.lastIndexOf("."); - var len = path.length; - if (pos >= 0 && len - pos >= 2) { // at least one char plus dot - let cur = pos; - while (++cur < len) { - if (!isAlphaOrDecimal(path.charCodeAt(cur))) { - assert(false); // not a valid external path - return path; - } - } - return path.substring(0, pos); + if (path.endsWith("/")) { + path += "index"; + } else if (path.endsWith(".ts")) { + path = path.substring(0, path.length - 3); } - assert(false); // not an external path return path; } @@ -2362,7 +2386,7 @@ export function mangleInternalPath(path: string): string { export function isTypeOmitted(type: TypeNode): bool { if (type.kind == NodeKind.NAMEDTYPE) { let name = (type).name; - return !(name.next !== null || name.identifier.text.length > 0); + return !(name.next || name.identifier.text.length > 0); } return false; } diff --git a/src/bindings.ts b/src/bindings.ts new file mode 100644 index 0000000000..7da5ad772e --- /dev/null +++ b/src/bindings.ts @@ -0,0 +1,11 @@ +/** + * @fileoverview Builders for various definitions describing a module. + * + * - JSBuilder: Creates a JavaScript glue code file (.js) + * - TSDBuilder: Creates a TypeScript definition file (.d.ts) + * + * @license Apache-2.0 + */ + +export { JSBuilder } from "./bindings/js"; +export { TSDBuilder } from "./bindings/tsd"; diff --git a/src/bindings/js.ts b/src/bindings/js.ts new file mode 100644 index 0000000000..768a435ec8 --- /dev/null +++ b/src/bindings/js.ts @@ -0,0 +1,1321 @@ +import { + NodeKind, + DecoratorKind, + LiteralKind, + LiteralExpression, + StringLiteralExpression, + TemplateLiteralExpression, + findDecorator +} from "../ast"; + +import { + CommonFlags +} from "../common"; + +import { + ElementKind, + Element, + Program, + Function, + Global, + Class, + Interface, + Enum, + EnumValue, + Field +} from "../program"; + +import { + Type, + TypeFlags, + Signature +} from "../types"; + +import { + CharCode, + escapeString, + indent, + isIdentifier +} from "../util"; + +import { + ExportsWalker +} from "./util"; + +// Limitations +// +// - Instrumented globals are no longer WebAssembly.Global, hence cannot be +// imported the same way as non-instrumented globals would allow. Affects both +// globals imported here and globals imported elsewhere. +// +// - Since little is known about how class imports and exports will behave, +// there is currently no glue generated for them. In IT there appears to be +// a concept of protocols that may or may not map in the future. In GC there +// doesn't appear to be a connection between classes and their methods so far. +// +// Instead, generated bindings are limited to lifting and lowering of plain +// objects when the class has no constructor and no non-public elements. In +// any other sitation an internal or external reference is passed. +// +// - Linking two instrumented modules with separate bindings produces +// intermediate garbage (i.e. goes through a temporary JS object). Any native +// mechanism enabling communication between modules directly would help here. +// +// - Cycles between the internal and the external GC cannot be resolved. Using +// a common GC as envisioned by the GC proposal can help here, but so far it +// seems that the same limitations as for IT will remain. +// +// - Duplicate Wasm imports don't yet work when instrumentation is required as +// provided argument types cannot be told apart when these only come in as +// numbers. It might be possible to modify the binary post compilation, but +// this has not been attempted yet. +// +// Oddities +// +// - Interface Types `string` will be incompatible with JavaScript `String` and +// it remains unclear how to proceed on this front. We could either use the IT +// mechanism and accept potential hazards or keep using unfortunate glue code. +// +// - Functions with a variable number of arguments need some special glue to +// inform the binary how many arguments have been provided so it can fill in +// defaults for the omitted arguments. No native mechanism in sight, yet. +// +// - Optional BigInt arguments must be coerced to 0n since JS does not +// implicitly coerce from `null` or `undefined`. Numbers do, however. +// +// - Generated bindings assume little endian architecture with typed arrays as +// it appears to be more efficient than using a DataView and BE use cases +// haven't been seen in the wild so far. +// +// - It is assumed that generated import bindings call JavaScript and that the +// callee expects a properly coerced integer value, leading to more `>>> 0` +// coercions than necessary when the import is actually another Wasm module. + +/** A JavaScript bindings builder. */ +export class JSBuilder extends ExportsWalker { + + /** Builds JavaScript bindings for the specified program. */ + static build(program: Program, esm: bool = true): string { + return new JSBuilder(program, esm).build(); + } + + private esm: bool; + private sb: string[] = []; + private indentLevel: i32 = 0; + + private needsLiftBuffer: bool = false; + private needsLowerBuffer: bool = false; + private needsLiftString: bool = false; + private needsLowerString: bool = false; + private needsLiftArray: bool = false; + private needsLowerArray: bool = false; + private needsLiftTypedArray: bool = false; + private needsLowerTypedArray: bool = false; + private needsLiftStaticArray: bool = false; + private needsLowerStaticArray: bool = false; + private needsLiftInternref: bool = false; + private needsLowerInternref: bool = false; + private needsRetain: bool = false; + private needsRelease: bool = false; + private needsNotNull: bool = false; + + private deferredLifts: Set = new Set(); + private deferredLowers: Set = new Set(); + private deferredCode: string[] = new Array(); + + private exports: string[] = new Array(); + private importMappings: Map = new Map(); + + /** Constructs a new JavaScript bindings builder. */ + constructor(program: Program, esm: bool, includePrivate: bool = false) { + super(program, includePrivate); + this.esm = esm; + } + + visitGlobal(name: string, element: Global): void { + var sb = this.sb; + var type = element.type; + this.exports.push(name); + if (!isPlainValue(type, Mode.EXPORT)) { + indent(sb, this.indentLevel); + sb.push(name); + sb.push(": {\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(element.internalName); + sb.push(": "); + sb.push(type.toString()); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push("valueOf() { return this.value; },\n"); + indent(sb, this.indentLevel); + sb.push("get value() {\n"); + indent(sb, ++this.indentLevel); + sb.push("return "); + this.makeLiftFromValue("exports." + name + ".value", type, sb); + sb.push(";\n"); + indent(sb, --this.indentLevel); + sb.push("}"); + if (!element.is(CommonFlags.CONST)) { + sb.push(",\n"); + indent(sb, this.indentLevel); + sb.push("set value(value) {\n"); + indent(sb, ++this.indentLevel); + sb.push("exports."); + sb.push(name); + sb.push(".value = "); + this.makeLowerToValue("value", type, sb); + sb.push(";\n"); + indent(sb, --this.indentLevel); + sb.push("}"); + } + sb.push("\n"); + indent(sb, --this.indentLevel); + sb.push("},\n"); + } + this.visitNamespace(name, element); + } + + visitEnum(name: string, element: Enum): void { + var sb = this.sb; + this.exports.push(name); + indent(sb, this.indentLevel); + sb.push(name); + sb.push(": (values => (\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(element.internalName); + sb.push("\n"); + var members = element.members; + if (members) { + for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { + let value = _values[i]; + if (value.kind != ElementKind.ENUMVALUE) continue; + indent(sb, this.indentLevel); + sb.push("values[values."); + sb.push(value.name); + if (value.is(CommonFlags.INLINED)) { + sb.push(" = "); + sb.push(i64_low((value).constantIntegerValue).toString()); + } else { + sb.push(" = exports[\""); + sb.push(escapeString(name + "." + value.name, CharCode.DOUBLEQUOTE)); + sb.push("\"].valueOf()"); + } + sb.push("] = \""); + sb.push(escapeString(value.name, CharCode.DOUBLEQUOTE)); + sb.push("\",\n"); + } + } + indent(sb, this.indentLevel); + sb.push("values\n"); + indent(sb, --this.indentLevel); + sb.push("))({}),\n"); + this.visitNamespace(name, element); + } + + makeGlobalImport(moduleName: string, name: string, element: Global): void { + var sb = this.sb; + var type = element.type; + indent(sb, this.indentLevel); + if (isIdentifier(name)) { + sb.push(name); + } else { + sb.push("\""); + sb.push(escapeString(name, CharCode.DOUBLEQUOTE)); + sb.push("\": "); + } + let moduleId = this.ensureModuleId(moduleName); + if (isPlainValue(type, Mode.IMPORT)) { + sb.push("(\n"); + indent(sb, this.indentLevel + 1); + sb.push("// "); + sb.push(element.internalName); + sb.push(": "); + sb.push(element.type.toString()); + sb.push("\n"); + indent(sb, this.indentLevel + 1); + if (moduleName != "env") { + sb.push("__module"); + sb.push(moduleId.toString()); + sb.push("."); + } + sb.push(name); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push(")"); + } else { + sb.push("{\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(element.internalName); + sb.push(": "); + sb.push(element.type.toString()); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push("// not supported: cannot lower before instantiate completes\n"); + indent(sb, --this.indentLevel); + sb.push("}"); + } + sb.push(",\n"); + } + + makeFunctionImport(moduleName: string, name: string, element: Function, code: string | null = null): void { + var sb = this.sb; + var signature = element.signature; + indent(sb, this.indentLevel); + if (isIdentifier(name)) { + sb.push(name); + } else { + sb.push("\""); + sb.push(escapeString(name, CharCode.DOUBLEQUOTE)); + sb.push("\""); + } + if (isPlainFunction(signature, Mode.IMPORT) && !code) { + sb.push(": (\n"); + indent(sb, this.indentLevel + 1); + sb.push("// "); + sb.push(element.internalName); + sb.push(element.signature.toString()); + sb.push("\n"); + indent(sb, this.indentLevel + 1); + if (moduleName != "env") { + sb.push(moduleName); + sb.push("."); + } + sb.push(name); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push(")"); + } else { + sb.push("("); + let parameterTypes = signature.parameterTypes; + let parameterNames = new Array(); + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + parameterNames.push(element.getParameterName(i)); + } + sb.push(parameterNames.join(", ")); + sb.push(") {\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(element.internalName); + sb.push(element.signature.toString()); + sb.push("\n"); + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + let type = parameterTypes[i]; + if (!isPlainValue(type, Mode.EXPORT)) { + let name = element.getParameterName(i); + indent(sb, this.indentLevel); + sb.push(name); + sb.push(" = "); + this.makeLiftFromValue(name, type, sb); + sb.push(";\n"); + } + } + let expr = new Array(); + let moduleId = this.ensureModuleId(moduleName); + if (code) { + expr.push("(() => {\n"); + indent(expr, 1); + expr.push("// @external.js\n"); + indentText(code, 1, expr); + expr.push("\n})()"); + } else { + if (moduleName != "env") { + expr.push("__module"); + expr.push(moduleId.toString()); + expr.push("."); + } + expr.push(name); + expr.push("("); + expr.push(parameterNames.join(", ")); + expr.push(")"); + } + code = expr.join(""); + expr.length = 0; + indentText(code, this.indentLevel, expr, true); + code = expr.join(""); + indent(sb, this.indentLevel); + if (signature.returnType != Type.void) { + sb.push("return "); + this.makeLowerToValue(code, signature.returnType, sb); + sb.push(";\n"); + } else { + sb.push(code); + sb.push(";\n"); + } + indent(sb, --this.indentLevel); + sb.push("}"); + } + sb.push(",\n"); + } + + visitFunction(name: string, element: Function): void { + if (element.is(CommonFlags.PRIVATE)) return; + var sb = this.sb; + var signature = element.signature; + this.exports.push(name); + if (!isPlainFunction(signature, Mode.EXPORT)) { + indent(sb, this.indentLevel); + sb.push(name); + sb.push("("); + let parameterTypes = signature.parameterTypes; + let numReferences = 0; + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + if (parameterTypes[i].isInternalReference) numReferences++; + if (i > 0) sb.push(", "); + sb.push(element.getParameterName(i)); + } + sb.push(") {\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(element.internalName); + sb.push(signature.toString()); + sb.push("\n"); + let releases = new Array(); + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + let type = parameterTypes[i]; + if (!isPlainValue(type, Mode.IMPORT)) { + let name = element.getParameterName(i); + indent(sb, this.indentLevel); + sb.push(name); + sb.push(" = "); + let needsRetainRelease = type.isInternalReference && --numReferences > 0; + if (needsRetainRelease) { + this.needsRetain = true; + this.needsRelease = true; + sb.push("__retain("); + releases.push(name); + } + this.makeLowerToValue(name, type, sb); + if (needsRetainRelease) { + sb.push(")"); + } + sb.push(";\n"); + } + } + if (releases.length) { + indent(sb, this.indentLevel++); + sb.push("try {\n"); + } + if (signature.requiredParameters < parameterTypes.length) { + indent(sb, this.indentLevel); + sb.push("exports.__setArgumentsLength(arguments.length);\n"); + } + const expr = new Array(); + expr.push("exports."); + expr.push(name); + expr.push("("); + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + if (i > 0) expr.push(", "); + expr.push(element.getParameterName(i)); + } + expr.push(")"); + if (signature.returnType != Type.void) { + indent(sb, this.indentLevel); + sb.push("return "); + this.makeLiftFromValue(expr.join(""), signature.returnType, sb); + } else { + indent(sb, this.indentLevel); + sb.push(expr.join("")); + } + sb.push(";\n"); + if (releases.length) { + indent(sb, this.indentLevel - 1); + sb.push("} finally {\n"); + for (let i = 0, k = releases.length; i < k; ++i) { + indent(sb, this.indentLevel); + sb.push("__release("); + sb.push(releases[i]); + sb.push(");\n"); + } + indent(sb, --this.indentLevel); + sb.push("}\n"); + } + indent(sb, --this.indentLevel); + sb.push("},\n"); + } + this.visitNamespace(name, element); + } + + visitClass(name: string, element: Class): void { + // not implemented + } + + visitInterface(name: string, element: Interface): void { + this.visitClass(name, element); + } + + visitField(name: string, element: Field): void { + // not implemented + } + + visitNamespace(name: string, element: Element): void { + // not implemented + } + + visitAlias(name: string, element: Element, originalName: string): void { + // not implemented + // var sb = this.sb; + // sb.push("export const "); + // sb.push(name); + // sb.push(" = "); + // sb.push(originalName); + // sb.push(";\n"); + } + + getExternalCode(element: Function): string | null { + let decorator = findDecorator(DecoratorKind.EXTERNAL_JS, element.decoratorNodes); + if (decorator) { + let args = decorator.args; + if (args && args.length == 1) { + let codeArg = args[0]; + if (codeArg.kind == NodeKind.LITERAL) { + let literal = codeArg; + if (literal.literalKind == LiteralKind.STRING) { + return (literal).value; + } + if (literal.literalKind == LiteralKind.TEMPLATE) { + let parts = (literal).parts; + if (parts.length == 1) { + return parts[0]; + } + } + } + } + } + return null; + } + + build(): string { + var exports = this.exports; + var moduleImports = this.program.moduleImports; + var program = this.program; + var options = program.options; + var sb = this.sb; + + sb.push(""); // placeholder + indent(sb, this.indentLevel++); + if (!this.esm) sb.push("export "); + sb.push("async function instantiate(module, imports = {}) {\n"); + const insertPos = sb.push("") - 1; + + // Instrument module imports. Keeps raw (JS) imports on the respective + // prototypes and overrides selectively where instrumentation is required. + indent(sb, this.indentLevel++); + sb.push("const adaptedImports = {\n"); + let sbLengthBefore = sb.length; + for (let _keys = Map_keys(moduleImports), i = 0, k = _keys.length; i < k; ++i) { + let moduleName = _keys[i]; + let moduleId = this.ensureModuleId(moduleName); + let module = >moduleImports.get(moduleName); + indent(sb, this.indentLevel); + if (isIdentifier(moduleName)) { + sb.push(moduleName); + } else { + sb.push("\""); + sb.push(escapeString(moduleName, CharCode.DOUBLEQUOTE)); + sb.push("\""); + } + let resetPos = sb.length; + sb.push(": Object.assign(Object.create("); + if (moduleName == "env") { + sb.push("globalThis"); + } else { + sb.push("__module"); + sb.push(moduleId.toString()); + } + sb.push("), "); + if (moduleName == "env") { + sb.push("imports.env || {}, "); + } + sb.push("{\n"); + ++this.indentLevel; + let numInstrumented = 0; + for (let _keys2 = Map_keys(module), j = 0, l = _keys2.length; j < l; ++j) { + let name = _keys2[j]; + let elem = assert(module.get(name)); + if (elem.kind == ElementKind.FUNCTION) { + let func = elem; + let code = this.getExternalCode(func); + if (!isPlainFunction(func.signature, Mode.IMPORT) || !isIdentifier(name) || code) { + this.makeFunctionImport(moduleName, name, elem, code); + ++numInstrumented; + } + } else if (elem.kind == ElementKind.GLOBAL) { + let global = elem; + if (!isPlainValue(global.type, Mode.IMPORT) || !isIdentifier(name)) { + this.makeGlobalImport(moduleName, name, global); + ++numInstrumented; + } + } + } + --this.indentLevel; + if (!numInstrumented) { + sb.length = resetPos; + if (moduleName == "env") { + sb.push(": Object.assign(Object.create(globalThis), imports.env || {})"); + } else { + sb.push(": __module"); + sb.push(moduleId.toString()); + } + sb.push(",\n"); + } else { + indent(sb, this.indentLevel); + sb.push("}),\n"); + } + } + --this.indentLevel; + let hasAdaptedImports = sb.length > sbLengthBefore; + if (hasAdaptedImports) { + indent(sb, this.indentLevel); + sb.push("};\n"); + } else { + sb.length = sbLengthBefore - 2; // incl. indent + } + + var mappings = this.importMappings; + var map = new Array(); + for (let _keys = Map_keys(mappings), i = 0, k = _keys.length; i < k; ++i) { + let moduleName = _keys[i]; + if (moduleName == "env") { + map.push(" const env = imports.env;\n"); + } else { + let moduleId = mappings.get(moduleName); + map.push(" const __module"); + map.push(moduleId.toString()); + map.push(" = imports"); + if (isIdentifier(moduleName)) { + map.push("."); + map.push(moduleName); + } else { + map.push("[\""); + map.push(escapeString(moduleName, CharCode.DOUBLEQUOTE)); + map.push("\"]"); + } + map.push(";\n"); + } + } + sb[insertPos] = map.join(""); + + indent(sb, this.indentLevel); + sb.push("const { exports } = await WebAssembly.instantiate(module"); + if (hasAdaptedImports) { + sb.push(", adaptedImports);\n"); + } else { + sb.push(", imports);\n"); + } + indent(sb, this.indentLevel); + sb.push("const memory = exports.memory || imports.env.memory;\n"); + indent(sb, this.indentLevel++); + sb.push("const adaptedExports = Object.setPrototypeOf({\n"); + sbLengthBefore = sb.length; + + // Instrument module exports. Keeps raw (Wasm) exports on the prototype and + // overrides selectively where instrumentation is required. + this.walk(); + --this.indentLevel; + let hasAdaptedExports = sb.length > sbLengthBefore; + if (hasAdaptedExports) { + indent(sb, this.indentLevel); + sb.push("}, exports);\n"); + } else { + if ( + this.needsLiftBuffer || this.needsLowerBuffer || + this.needsLiftString || this.needsLowerString || + this.needsLiftArray || this.needsLowerArray || + this.needsLiftTypedArray || this.needsLowerTypedArray || + this.needsLiftStaticArray + ) { + sb.length = sbLengthBefore - 2; // skip adaptedExports + 1x indent + } else { + sb.length = sbLengthBefore - 4; // skip memory and adaptedExports + 2x indent + } + } + + // Add external JS code fragments + var deferredCode = this.deferredCode; + if (deferredCode.length) { + for (let i = 0, k = deferredCode.length; i < k; ++i) { + sb.push(deferredCode[i]); + } + } + + // Add the respective lifting and lowering adapters + if (this.needsLiftBuffer) { + let objectInstance = program.OBJECTInstance; + let rtSizeOffset = objectInstance.offsetof("rtSize") - objectInstance.nextMemoryOffset; + sb.push(` function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - ${-rtSizeOffset} >>> 2]); + } +`); + } + if (this.needsLowerBuffer) { + let arrayBufferId = program.arrayBufferInstance.id; + sb.push(` function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, ${arrayBufferId}) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } +`); + } + if (this.needsLiftString) { + let objectInstance = program.OBJECTInstance; + let rtSizeOffset = objectInstance.offsetof("rtSize") - objectInstance.nextMemoryOffset; + let chunkSize = 1024; + sb.push(` function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - ${-rtSizeOffset} >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > ${chunkSize}) string += String.fromCharCode(...memoryU16.subarray(start, start += ${chunkSize})); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } +`); + } + if (this.needsLowerString) { + let stringId = program.stringInstance.id; + sb.push(` function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, ${stringId}) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } +`); + } + if (this.needsLiftArray) { + let dataStartOffset = program.arrayBufferViewInstance.offsetof("dataStart"); + let lengthOffset = program.arrayBufferViewInstance.nextMemoryOffset; + sb.push(` function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + memoryU32 = new Uint32Array(memory.buffer), + dataStart = memoryU32[pointer + ${dataStartOffset} >>> 2], + length = memoryU32[pointer + ${lengthOffset} >>> 2], + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } +`); + } + if (this.needsLowerArray) { + let arrayBufferId = program.arrayBufferInstance.id; + let arrayBufferViewInstance = program.arrayBufferViewInstance; + let arraySize = arrayBufferViewInstance.nextMemoryOffset + 4; // + length + let bufferOffset = arrayBufferViewInstance.offsetof("buffer"); + let dataStartOffset = arrayBufferViewInstance.offsetof("dataStart"); + let byteLengthOffset = arrayBufferViewInstance.offsetof("byteLength"); + let lengthOffset = byteLengthOffset + 4; + sb.push(` function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, ${arrayBufferId})) >>> 0, + header = exports.__pin(exports.__new(${arraySize}, id)) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + ${bufferOffset} >>> 2] = buffer; + memoryU32[header + ${dataStartOffset} >>> 2] = buffer; + memoryU32[header + ${byteLengthOffset} >>> 2] = length << align; + memoryU32[header + ${lengthOffset} >>> 2] = length; + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } +`); + } + if (this.needsLiftTypedArray) { + let arrayBufferViewInstance = program.arrayBufferViewInstance; + let dataStartOffset = arrayBufferViewInstance.offsetof("dataStart"); + let byteLengthOffset = arrayBufferViewInstance.offsetof("byteLength"); + sb.push(` function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + const memoryU32 = new Uint32Array(memory.buffer); + return new constructor( + memory.buffer, + memoryU32[pointer + ${dataStartOffset} >>> 2], + memoryU32[pointer + ${byteLengthOffset} >>> 2] / constructor.BYTES_PER_ELEMENT + ).slice(); + } +`); + } + if (this.needsLowerTypedArray) { + let arrayBufferId = program.arrayBufferInstance.id; + let arrayBufferViewInstance = program.arrayBufferViewInstance; + let size = arrayBufferViewInstance.nextMemoryOffset; + let bufferOffset = arrayBufferViewInstance.offsetof("buffer"); + let dataStartOffset = arrayBufferViewInstance.offsetof("dataStart"); + let byteLengthOffset = arrayBufferViewInstance.offsetof("byteLength"); + sb.push(` function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, ${arrayBufferId})) >>> 0, + header = exports.__new(${size}, id) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + ${bufferOffset} >>> 2] = buffer; + memoryU32[header + ${dataStartOffset} >>> 2] = buffer; + memoryU32[header + ${byteLengthOffset} >>> 2] = length << align; + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } +`); + } + if (this.needsLiftStaticArray) { + let objectInstance = program.OBJECTInstance; + let rtSizeOffset = objectInstance.offsetof("rtSize") - objectInstance.nextMemoryOffset; + sb.push(` function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = new Uint32Array(memory.buffer)[pointer - ${-rtSizeOffset} >>> 2] >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } +`); + } + if (this.needsLowerStaticArray) { + sb.push(` function __lowerStaticArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + return buffer; + } +`); + } + if (this.needsLiftInternref) { + this.needsRetain = true; + this.needsRelease = true; + sb.push(` const registry = new FinalizationRegistry(__release); + class Internref extends Number {} + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } +`); + } + if (this.needsLowerInternref) { + sb.push(` function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } +`); + } + if (this.needsRetain || this.needsRelease) { + sb.push(` const refcounts = new Map(); +`); + } + if (this.needsRetain) { + sb.push(` function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } +`); + } + if (this.needsRelease) { + sb.push(` function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(\`invalid refcount '\${refcount}' for reference '\${pointer}'\`); + } + } +`); + } + if (this.needsNotNull) { + sb.push(` function __notnull() { + throw TypeError("value must not be null"); + } +`); + } + + var exportStart = options.exportStart; + if (exportStart) { + sb.push(` exports.${exportStart}();\n`); + } + + if (hasAdaptedExports) { + sb.push(" return adaptedExports;\n}\n"); + } else { + sb.push(" return exports;\n}\n"); + } + --this.indentLevel; + assert(this.indentLevel == 0); + + if (this.esm) { + sb.push("export const {\n "); + for (let i = 0, k = exports.length; i < k; ++i) { + if (i > 0) sb.push(",\n "); + sb.push(exports[i]); + } + sb.push(` +} = await (async url => instantiate( + await ( + typeof globalThis.fetch === "function" + ? WebAssembly.compileStreaming(globalThis.fetch(url)) + : WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)) + ), { +`); + let needsMaybeDefault = false; + let importExpr = new Array(); + for (let _keys = Map_keys(mappings), i = 0, k = _keys.length; i < k; ++i) { + let moduleName = _keys[i]; + if (moduleName == "env") { + indent(sb, 2); + sb.push("env: globalThis,\n"); + } else { + let moduleId = this.ensureModuleId(moduleName); + indent(sb, 2); + if (isIdentifier(moduleName)) { + sb.push(moduleName); + } else { + sb.push("\""); + sb.push(escapeString(moduleName, CharCode.DOUBLEQUOTE)); + sb.push("\""); + } + sb.push(": __maybeDefault(__import"); + sb.push(moduleId.toString()); + sb.push("),\n"); + importExpr.push("import * as __import"); + importExpr.push(moduleId.toString()); + importExpr.push(" from \""); + importExpr.push(escapeString(moduleName, CharCode.DOUBLEQUOTE)); + importExpr.push("\";\n"); + needsMaybeDefault = true; + } + } + sb[0] = importExpr.join(""); + sb.push(` } +))(new URL("${escapeString(options.basenameHint, CharCode.DOUBLEQUOTE)}.wasm", import.meta.url)); +`); + if (needsMaybeDefault) { + sb.push(`function __maybeDefault(module) { + return typeof module.default === "object" && Object.keys(module).length == 1 + ? module.default + : module; +} +`); + } + } + return sb.join(""); + } + + ensureModuleId(moduleName: string): i32 { + if (moduleName == "env") return -1; + var importMap = this.importMappings; + let moduleId = importMap.has(moduleName) + ? i32(importMap.get(moduleName)) + : importMap.size; + importMap.set(moduleName, moduleId); + return moduleId; + } + + isPlainObject(clazz: Class): bool { + // A plain object does not inherit and does not have a constructor or private properties + if (clazz.base) return false; + var members = clazz.members; + if (members) { + for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { + let member = _values[i]; + if (member.isAny(CommonFlags.PRIVATE | CommonFlags.PROTECTED)) return false; + if (member.is(CommonFlags.CONSTRUCTOR)) { + // a generated constructor is ok + if (member.declaration.range != this.program.nativeRange) return false; + } + } + } + return true; + } + + /** Lifts a WebAssembly value to a JavaScript value. */ + makeLiftFromValue(name: string, type: Type, sb: string[] = this.sb): void { + if (type.isInternalReference) { + const clazz = assert(type.getClass()); + if (clazz.extends(this.program.arrayBufferInstance.prototype)) { + sb.push("__liftBuffer("); + this.needsLiftBuffer = true; + } else if (clazz.extends(this.program.stringInstance.prototype)) { + sb.push("__liftString("); + this.needsLiftString = true; + } else if (clazz.extends(this.program.arrayPrototype)) { + let valueType = clazz.getArrayValueType(); + sb.push("__liftArray("); + this.makeLiftFromMemory(valueType, sb); + sb.push(", "); + sb.push(valueType.alignLog2.toString()); + sb.push(", "); + this.needsLiftArray = true; + } else if (clazz.extends(this.program.staticArrayPrototype)) { + let valueType = clazz.getArrayValueType(); + sb.push("__liftStaticArray("); + this.makeLiftFromMemory(valueType, sb); + sb.push(", "); + sb.push(valueType.alignLog2.toString()); + sb.push(", "); + this.needsLiftStaticArray = true; + } else if (clazz.extends(this.program.arrayBufferViewInstance.prototype)) { + sb.push("__liftTypedArray("); + if (clazz.name == "Uint64Array") { + sb.push("BigUint64Array"); + } else if (clazz.name == "Int64Array") { + sb.push("BigInt64Array"); + } else { + sb.push(clazz.name); // TODO: what if extended? + } + sb.push(", "); + this.needsLiftTypedArray = true; + } else if (this.isPlainObject(clazz)) { + sb.push("__liftRecord"); + sb.push(clazz.id.toString()); + sb.push("("); + if (!this.deferredLifts.has(clazz)) { + this.deferredLifts.add(clazz); + let prevIndentLevel = this.indentLevel; + this.indentLevel = 1; + this.deferredCode.push(this.makeLiftRecord(clazz)); + this.indentLevel = prevIndentLevel; + } + } else { + sb.push("__liftInternref("); + this.needsLiftInternref = true; + } + sb.push(name); + if (!name.startsWith("new Uint32Array(")) { + // no need to coerce when lifting with indirection + sb.push(" >>> 0"); + } + sb.push(")"); + } else { + sb.push(name); + if (type.isUnsignedIntegerValue && type.size == 32) { + sb.push(" >>> 0"); + } else if (type == Type.bool) { + sb.push(" != 0"); + } + } + } + + /** Lowers a JavaScript value to a WebAssembly value. */ + makeLowerToValue(name: string, type: Type, sb: string[] = this.sb): void { + if (type.isInternalReference) { + const clazz = assert(type.getClass()); + if (clazz.extends(this.program.arrayBufferInstance.prototype)) { + sb.push("__lowerBuffer("); + this.needsLowerBuffer = true; + } else if (clazz.extends(this.program.stringInstance.prototype)) { + sb.push("__lowerString("); + this.needsLowerString = true; + } else if (clazz.extends(this.program.arrayPrototype)) { + let valueType = clazz.getArrayValueType(); + sb.push("__lowerArray("); + this.makeLowerToMemory(valueType, sb); + sb.push(", "); + sb.push(clazz.id.toString()); + sb.push(", "); + sb.push(clazz.getArrayValueType().alignLog2.toString()); + sb.push(", "); + this.needsLowerArray = true; + } else if (clazz.extends(this.program.staticArrayPrototype)) { + let valueType = clazz.getArrayValueType(); + sb.push("__lowerStaticArray("); + this.makeLowerToMemory(valueType, sb); + sb.push(", "); + sb.push(clazz.id.toString()); + sb.push(", "); + sb.push(clazz.getArrayValueType().alignLog2.toString()); + sb.push(", "); + this.needsLowerStaticArray = true; + } else if (clazz.extends(this.program.arrayBufferViewInstance.prototype)) { + let valueType = clazz.getArrayValueType(); + sb.push("__lowerTypedArray("); + if (valueType == Type.u64) { + sb.push("BigUint64Array"); + } else if (valueType == Type.i64) { + sb.push("BigInt64Array"); + } else { + sb.push(clazz.name); // TODO: what if extended? + } + sb.push(", "); + sb.push(clazz.id.toString()); + sb.push(", "); + sb.push(clazz.getArrayValueType().alignLog2.toString()); + sb.push(", "); + this.needsLowerTypedArray = true; + } else if (this.isPlainObject(clazz)) { + sb.push("__lowerRecord"); + sb.push(clazz.id.toString()); + sb.push("("); + if (!this.deferredLowers.has(clazz)) { + this.deferredLowers.add(clazz); + let prevIndentLevel = this.indentLevel; + this.indentLevel = 1; + this.deferredCode.push(this.makeLowerRecord(clazz)); + this.indentLevel = prevIndentLevel; + } + } else { + sb.push("__lowerInternref("); + this.needsLowerInternref = true; + } + sb.push(name); + sb.push(")"); + if (!type.is(TypeFlags.NULLABLE)) { + this.needsNotNull = true; + sb.push(" || __notnull()"); + } + } else { + sb.push(name); // basic value + if (type.isIntegerValue && type.size == 64) { + sb.push(" || 0n"); + } else if (type == Type.bool) { + // may be stored to an Uint8Array, make sure to store 1/0 + sb.push(" ? 1 : 0"); + } + } + } + + /** Lifts a WebAssembly memory address to a JavaScript value. */ + makeLiftFromMemory(valueType: Type, sb: string[] = this.sb, target: string | null = null): void { + if (!target) { + sb.push("pointer => "); + target = "pointer"; + } + if (valueType.isInternalReference) { + let expr = new Array(); + expr.push("new Uint32Array(memory.buffer)["); + expr.push(target); + expr.push(" >>> 2]"); + this.makeLiftFromValue(expr.join(""), valueType, sb); + } else { + if (valueType == Type.i8) { + sb.push("new Int8Array(memory.buffer)["); + } else if (valueType == Type.u8 || valueType == Type.bool) { + sb.push("new Uint8Array(memory.buffer)["); + } else if (valueType == Type.i16) { + sb.push("new Int16Array(memory.buffer)["); + } else if (valueType == Type.u16) { + sb.push("new Uint16Array(memory.buffer)["); + } else if (valueType == Type.i32 || valueType == Type.isize32) { + sb.push("new Int32Array(memory.buffer)["); + } else if (valueType == Type.u32 || valueType == Type.usize32) { + sb.push("new Uint32Array(memory.buffer)["); + } else if (valueType == Type.i64 || valueType == Type.isize64) { + sb.push("new BigInt64Array(memory.buffer)["); + } else if (valueType == Type.u64 || valueType == Type.usize64) { + sb.push("new BigUint64Array(memory.buffer)["); + } else if (valueType == Type.f32) { + sb.push("new Float32Array(memory.buffer)["); + } else if (valueType == Type.f64) { + sb.push("new Float64Array(memory.buffer)["); + } else { + sb.push("{ throw Error(\"unsupported type\"); }"); + return; + } + sb.push(target); + sb.push(" >>> "); + sb.push(valueType.alignLog2.toString()); + sb.push("]"); + if (valueType == Type.bool) { + sb.push(" != 0"); + } + } + } + + /** Lowers a JavaScript value to a WebAssembly memory address. */ + makeLowerToMemory(valueType: Type, sb: string[] = this.sb, targetName: string | null = null, valueName: string | null = null): void { + let skipTail = true; + if (!targetName || !valueName) { + sb.push("(pointer, value) => { "); + targetName = "pointer"; + valueName = "value"; + skipTail = false; + } + if (valueType.isInternalReference) { + sb.push("new Uint32Array(memory.buffer)["); + } else { + if (valueType == Type.i8) { + sb.push("new Int8Array(memory.buffer)["); + } else if (valueType == Type.u8 || valueType == Type.bool) { + sb.push("new Uint8Array(memory.buffer)["); + } else if (valueType == Type.i16) { + sb.push("new Int16Array(memory.buffer)["); + } else if (valueType == Type.u16) { + sb.push("new Uint16Array(memory.buffer)["); + } else if (valueType == Type.i32 || valueType == Type.isize32) { + sb.push("new Int32Array(memory.buffer)["); + } else if (valueType == Type.u32 || valueType == Type.usize32) { + sb.push("new Uint32Array(memory.buffer)["); + } else if (valueType == Type.i64 || valueType == Type.isize64) { + sb.push("new BigInt64Array(memory.buffer)["); + } else if (valueType == Type.u64 || valueType == Type.usize64) { + sb.push("new BigUint64Array(memory.buffer)["); + } else if (valueType == Type.f32) { + sb.push("new Float32Array(memory.buffer)["); + } else if (valueType == Type.f64) { + sb.push("new Float64Array(memory.buffer)["); + } else { + if (skipTail) { + sb.push("(() => { throw Error(\"unsupported type\") })()"); + } else { + sb.push("throw Error(\"unsupported type\"); }"); + } + return; + } + } + sb.push(targetName); + sb.push(" >>> "); + sb.push(valueType.alignLog2.toString()); + sb.push("] = "); + this.makeLowerToValue(valueName, valueType, sb); + if (!skipTail) sb.push("; }"); + } + + makeLiftRecord(clazz: Class): string { + assert(this.isPlainObject(clazz)); + var sb = new Array(); + indent(sb, this.indentLevel); + sb.push("function __liftRecord"); + sb.push(clazz.id.toString()); + sb.push("(pointer) {\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(clazz.type.toString()); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push("// Hint: Opt-out from lifting as a record by providing an empty constructor\n"); + indent(sb, this.indentLevel); + sb.push("if (!pointer) return null;\n"); + indent(sb, this.indentLevel++); + sb.push("return {\n"); + var members = clazz.members; + if (members) { + for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { + let memberName = _keys[i]; + let member = assert(members.get(memberName)); + if (member.kind != ElementKind.FIELD) continue; + let field = member; + indent(sb, this.indentLevel); + sb.push(field.name); + sb.push(": "); + this.makeLiftFromMemory(field.type, sb, "pointer + " + field.memoryOffset.toString()); + sb.push(",\n"); + } + } + indent(sb, --this.indentLevel); + sb.push("};\n"); + indent(sb, --this.indentLevel); + sb.push("}\n"); + return sb.join(""); + } + + makeLowerRecord(clazz: Class): string { + assert(this.isPlainObject(clazz)); + var sb = new Array(); + indent(sb, this.indentLevel); + sb.push("function __lowerRecord"); + sb.push(clazz.id.toString()); + sb.push("(value) {\n"); + indent(sb, ++this.indentLevel); + sb.push("// "); + sb.push(clazz.type.toString()); + sb.push("\n"); + indent(sb, this.indentLevel); + sb.push("// Hint: Opt-out from lowering as a record by providing an empty constructor\n"); + indent(sb, this.indentLevel); + sb.push("if (value == null) return 0;\n"); + indent(sb, this.indentLevel); + sb.push("const pointer = exports.__pin(exports.__new("); + sb.push(clazz.nextMemoryOffset.toString()); + sb.push(", "); + sb.push(clazz.id.toString()); + sb.push("));\n"); + var members = clazz.members; + if (members) { + for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { + let memberName = _keys[i]; + let member = assert(members.get(memberName)); + if (member.kind != ElementKind.FIELD) continue; + let field = member; + indent(sb, this.indentLevel); + this.makeLowerToMemory(field.type, sb, "pointer + " + field.memoryOffset.toString(), "value." + memberName); + sb.push(";\n"); + } + } + indent(sb, this.indentLevel); + sb.push("exports.__unpin(pointer);\n"); + indent(sb, this.indentLevel); + sb.push("return pointer;\n"); + indent(sb, --this.indentLevel); + sb.push("}\n"); + return sb.join(""); + } +} + +// Helpers + +enum Mode { + IMPORT, + EXPORT +} + +function isPlainValue(type: Type, kind: Mode): bool { + if (kind == Mode.IMPORT) { + // requires coercion of undefined to 0n + if (type.isIntegerValue && type.size == 64) return false; + // may be stored to an Uint8Array, make sure to store 1/0 + if (type == Type.bool) return false; + } else { + // requires coercion from signed to unsigned + if (type.isUnsignedIntegerValue && type.size == 32) return false; + // requires coercion from 1/0 to true/false + if (type == Type.bool) return false; + } + return !type.isInternalReference; +} + +function isPlainFunction(signature: Signature, mode: Mode): bool { + var parameterTypes = signature.parameterTypes; + var inverseMode = mode == Mode.IMPORT ? Mode.EXPORT : Mode.IMPORT; + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + if (!isPlainValue(parameterTypes[i], inverseMode)) return false; + } + if (!isPlainValue(signature.returnType, mode)) return false; + return true; +} + +function indentText(text: string, indentLevel: i32, sb: string[], butFirst: bool = false): void { + var lineStart = 0; + var length = text.length; + var pos = 0; + while (pos < length) { + if (text.charCodeAt(pos) == CharCode.LINEFEED) { + if (butFirst) butFirst = false; + else indent(sb, indentLevel); + sb.push(text.substring(lineStart, lineStart = pos + 1)); + } + ++pos; + } + if (lineStart < length) { + if (!butFirst) indent(sb, indentLevel); + sb.push(text.substring(lineStart)); + } +} diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts new file mode 100644 index 0000000000..be7563839a --- /dev/null +++ b/src/bindings/tsd.ts @@ -0,0 +1,387 @@ +import { + CommonFlags +} from "../common"; + +import { + Global, + Program, + Function, + Class, + Interface, + Enum, + ElementKind, + Field, + Element +} from "../program"; + +import { + Type, + TypeFlags +} from "../types"; + +import { + CharCode, + escapeString, + indent, isIdentifier +} from "../util"; + +import { + ExportsWalker +} from "./util"; + +/** A TypeScript definitions builder. */ +export class TSDBuilder extends ExportsWalker { + + /** Builds TypeScript definitions for the specified program. */ + static build(program: Program, esm: bool = true): string { + return new TSDBuilder(program, esm).build(); + } + + private esm: bool; + private sb: string[] = []; + private indentLevel: i32 = 0; + private seenObjectTypes: Map = new Map(); + private deferredTypings: string[] = new Array(); + + /** Constructs a new TypeScript definitions builder. */ + constructor(program: Program, esm: bool, includePrivate: bool = false) { + super(program, includePrivate); + this.esm = esm; + } + + visitGlobal(name: string, element: Global): void { + var sb = this.sb; + var type = element.type; + var tsType = this.toTypeScriptType(type, Mode.EXPORT); + indent(sb, this.indentLevel); + sb.push("/** "); + sb.push(element.internalName); + sb.push(" */\n"); + indent(sb, this.indentLevel); + sb.push("export "); + if (this.esm) sb.push("declare "); + sb.push("const "); + sb.push(name); + sb.push(": {\n"); + indent(sb, ++this.indentLevel); + sb.push("/** @type `"); + sb.push(type.toString()); + sb.push("` */\n"); + indent(sb, this.indentLevel); + sb.push("get value(): "); + sb.push(tsType); + if (!element.is(CommonFlags.CONST)) { + sb.push(";\n"); + indent(sb, this.indentLevel); + sb.push("set value(value: "); + sb.push(tsType); + sb.push(");\n"); + } else { + sb.push("\n"); + } + indent(sb, --this.indentLevel); + sb.push("};\n"); + } + + visitEnum(name: string, element: Enum): void { + var sb = this.sb; + indent(sb, this.indentLevel); + sb.push("/** "); + sb.push(element.internalName); + sb.push(" */\n"); + indent(sb, this.indentLevel++); + sb.push("export "); + if (this.esm) sb.push("declare "); + sb.push("enum "); + sb.push(name); + sb.push(" {\n"); + var members = element.members; + if (members) { + // TODO: for (let [memberName, member] of members) { + for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { + let memberName = unchecked(_keys[i]); + let member = assert(members.get(memberName)); + if (member.kind != ElementKind.ENUMVALUE) continue; + indent(sb, this.indentLevel); + sb.push("/** @type `i32` */\n"); + indent(sb, this.indentLevel); + sb.push(memberName); + sb.push(",\n"); + } + } + indent(sb, --this.indentLevel); + sb.push("}\n"); + } + + visitFunction(name: string, element: Function): void { + var sb = this.sb; + var signature = element.signature; + indent(sb, this.indentLevel); + sb.push("/**\n"); + indent(sb, this.indentLevel); + sb.push(" * "); + sb.push(element.internalName); + sb.push("\n"); + var parameterTypes = signature.parameterTypes; + var numParameters = parameterTypes.length; + for (let i = 0; i < numParameters; ++i) { + indent(sb, this.indentLevel); + sb.push(" * @param "); + sb.push(element.getParameterName(i)); + sb.push(" `"); + sb.push(parameterTypes[i].toString()); + sb.push("`\n"); + } + var returnType = signature.returnType; + if (returnType != Type.void) { + indent(sb, this.indentLevel); + sb.push(" * @returns `"); + sb.push(returnType.toString()); + sb.push("`\n"); + } + indent(sb, this.indentLevel); + sb.push(" */\n"); + indent(sb, this.indentLevel); + sb.push("export "); + if (this.esm) sb.push("declare "); + sb.push("function "); + sb.push(name); + sb.push("("); + var requiredParameters = signature.requiredParameters; + for (let i = 0; i < numParameters; ++i) { + if (i) sb.push(", "); + sb.push(element.getParameterName(i)); + if (i >= requiredParameters) sb.push("?"); + sb.push(": "); + sb.push(this.toTypeScriptType(parameterTypes[i], Mode.IMPORT)); + } + sb.push("): "); + sb.push(this.toTypeScriptType(returnType, Mode.EXPORT)); + sb.push(";\n"); + } + + visitClass(name: string, element: Class): void { + // not implemented + } + + visitInterface(name: string, element: Interface): void { + // not implemented + } + + visitField(name: string, element: Field): void { + // not implemented + } + + visitNamespace(name: string, element: Element): void { + // not implemented + } + + visitAlias(name: string, element: Element, originalName: string): void { + // not implemented + } + + build(): string { + var sb = this.sb; + if (!this.esm) { + sb.push("declare namespace __AdaptedExports {\n"); + ++this.indentLevel; + } + this.walk(); + if (!this.esm) { + --this.indentLevel; + sb.push("}\n"); + } + var deferredTypes = this.deferredTypings; + for (let i = 0, k = deferredTypes.length; i < k; ++i) { + sb.push(deferredTypes[i]); + } + if (!this.esm) { + sb.push("/** Instantiates the compiled WebAssembly module with the given imports. */\n"); + sb.push("export declare function instantiate(module: WebAssembly.Module, imports: {\n"); + let moduleImports = this.program.moduleImports; + for (let _keys = Map_keys(moduleImports), i = 0, k = _keys.length; i < k; ++i) { + let moduleName = _keys[i]; + sb.push(" "); + if (isIdentifier(moduleName)) { + sb.push(moduleName); + } else { + sb.push("\""); + sb.push(escapeString(moduleName, CharCode.DOUBLEQUOTE)); + sb.push("\""); + } + sb.push(": unknown,\n"); + } + sb.push("}): Promise;\n"); + } + return sb.join(""); + } + + isPlainObject(clazz: Class): bool { + // A plain object does not inherit and does not have a constructor or private properties + if (clazz.base) return false; + var members = clazz.members; + if (members) { + for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { + let member = _values[i]; + if (member.isAny(CommonFlags.PRIVATE | CommonFlags.PROTECTED)) return false; + if (member.is(CommonFlags.CONSTRUCTOR)) { + // a generated constructor is ok + if (member.declaration.range != this.program.nativeRange) return false; + } + } + } + return true; + } + + toTypeScriptType(type: Type, mode: Mode): string { + if (type.isInternalReference) { + const sb = new Array(); + const clazz = assert(type.getClass()); + if (clazz.extends(this.program.arrayBufferInstance.prototype)) { + sb.push("ArrayBuffer"); + } else if (clazz.extends(this.program.stringInstance.prototype)) { + sb.push("string"); + } else if ( + clazz.extends(this.program.arrayPrototype) || + clazz.extends(this.program.staticArrayPrototype) + ) { + const valueType = clazz.getArrayValueType(); + sb.push("Array<"); + sb.push(this.toTypeScriptType(valueType, mode)); + sb.push(">"); + } else if (clazz.extends(this.program.arrayBufferViewInstance.prototype)) { + const valueType = clazz.getArrayValueType(); + if (valueType == Type.i8) { + sb.push("Int8Array"); + } else if (valueType == Type.u8) { + if (clazz.extends(this.program.uint8ClampedArrayPrototype)) { + sb.push("Uint8ClampedArray"); + } else { + sb.push("Uint8Array"); + } + } else if (valueType == Type.i16) { + sb.push("Int16Array"); + } else if (valueType == Type.u16) { + sb.push("Uint16Array"); + } else if (valueType == Type.i32) { + sb.push("Int32Array"); + } else if (valueType == Type.u32) { + sb.push("Uint32Array"); + } else if (valueType == Type.i64) { + sb.push("BigInt64Array"); + } else if (valueType == Type.u64) { + sb.push("BigUint64Array"); + } else if (valueType == Type.f32) { + sb.push("Float32Array"); + } else if (valueType == Type.f64) { + sb.push("Float64Array"); + } else { + sb.push("unknown"); + } + } else { + let seenObjectTypes = this.seenObjectTypes; + let typeName: string; + if (seenObjectTypes.has(clazz)) { + typeName = assert(seenObjectTypes.get(clazz)); + sb.push(typeName); + if (this.isPlainObject(clazz)) { + sb.push(mode == Mode.EXPORT ? "" : ""); + } + } else { + if (this.isPlainObject(clazz)) { + typeName = "__Record" + clazz.id.toString(); + sb.push(typeName); + sb.push(mode == Mode.EXPORT ? "" : ""); + this.deferredTypings.push(this.makeRecordType(clazz, mode)); + } else { + typeName = "__Internref" + clazz.id.toString(); + sb.push(typeName); + this.deferredTypings.push(this.makeInternrefType(clazz)); + } + seenObjectTypes.set(clazz, typeName); + } + } + if (type.is(TypeFlags.NULLABLE)) { + sb.push(" | null"); + } + return sb.join(""); + } else { + if (type == Type.bool) { + return "boolean"; + } + if (type == Type.void) { + return "void"; + } + if (type.isNumericValue) { + if (type.isLongIntegerValue) { + return "bigint"; + } + return "number"; + } + } + return "unknown"; + } + + makeRecordType(clazz: Class, mode: Mode): string { + var sb = new Array(); + var members = clazz.members; + sb.push("/** "); + sb.push(clazz.internalName); + sb.push(" */\ndeclare interface __Record"); + sb.push(clazz.id.toString()); + sb.push(" {\n"); + if (members) { + for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { + let memberName = _keys[i]; + let member = assert(members.get(memberName)); + if (member.kind != ElementKind.FIELD) continue; + let field = member; + sb.push(" /** @type `"); + sb.push(field.type.toString()); + sb.push("` */\n "); + sb.push(field.name); + sb.push(": "); + sb.push(this.toTypeScriptType(field.type, mode)); + if (this.fieldAcceptsUndefined(field.type)) { + sb.push(" | TOmittable"); + } + sb.push(";\n"); + } + } + sb.push("}\n"); + return sb.join(""); + } + + fieldAcceptsUndefined(type: Type): bool { + if (type.isInternalReference) { + return type.is(TypeFlags.NULLABLE); + } + return true; + } + + makeInternrefType(clazz: Class): string { + var sb = new Array(); + sb.push("/** "); + sb.push(clazz.internalName); + sb.push(" */\n"); + sb.push("declare class __Internref"); + sb.push(clazz.id.toString()); + sb.push(" extends Number {\n"); + var base: Class | null = clazz; + do { + sb.push(" private __nominal"); + sb.push(base.id.toString()); + sb.push(": symbol;\n"); + base = base.base; + } while (base); + sb.push("}\n"); + return sb.join(""); + } +} + +// Helpers + +enum Mode { + IMPORT, + EXPORT +} diff --git a/src/bindings/util.ts b/src/bindings/util.ts new file mode 100644 index 0000000000..9e5ea8fc33 --- /dev/null +++ b/src/bindings/util.ts @@ -0,0 +1,198 @@ +import { + SourceKind +} from "../ast"; + +import { + CommonFlags +} from "../common"; + +import { + ClassPrototype, + Element, + ElementKind, + Function, + Enum, + Class, + Interface, + Field, + File, + FunctionPrototype, + Global, + Program, + Property, + PropertyPrototype +} from "../program"; + +/** Walker base class. */ +export abstract class ExportsWalker { + + /** Program reference. */ + program: Program; + /** Whether to include private members */ + includePrivate: bool; + /** Already seen elements. */ + seen: Map = new Map(); + + /** Constructs a new Element walker. */ + constructor(program: Program, includePrivate: bool = false) { + this.program = program; + this.includePrivate = includePrivate; + } + + /** Walks all elements and calls the respective handlers. */ + walk(): void { + // TODO: for (let file of this.program.filesByName.values()) { + for (let _values = Map_values(this.program.filesByName), i = 0, k = _values.length; i < k; ++i) { + let file = unchecked(_values[i]); + if (file.source.sourceKind == SourceKind.USER_ENTRY) this.visitFile(file); + } + } + + /** Visits all exported elements of a file. */ + visitFile(file: File): void { + var exports = file.exports; + if (exports) { + // TODO: for (let [memberName, member] of exports) { + for (let _keys = Map_keys(exports), i = 0, k = _keys.length; i < k; ++i) { + let memberName = unchecked(_keys[i]); + let member = assert(exports.get(memberName)); + this.visitElement(memberName, member); + } + } + var exportsStar = file.exportsStar; + if (exportsStar) { + for (let i = 0, k = exportsStar.length; i < k; ++i) { + let exportStar = unchecked(exportsStar[i]); + this.visitFile(exportStar); + } + } + } + + /** Visits an element.*/ + visitElement(name: string, element: Element): void { + if (element.is(CommonFlags.PRIVATE) && !this.includePrivate) return; + var seen = this.seen; + if (!element.is(CommonFlags.INSTANCE) && seen.has(element)) { + this.visitAlias(name, element, assert(seen.get(element))); + return; + } + seen.set(element, name); + switch (element.kind) { + case ElementKind.GLOBAL: { + if (element.is(CommonFlags.COMPILED)) this.visitGlobal(name, element); + break; + } + case ElementKind.ENUM: { + if (element.is(CommonFlags.COMPILED)) this.visitEnum(name, element); + break; + } + case ElementKind.ENUMVALUE: break; // handled by visitEnum + case ElementKind.FUNCTION_PROTOTYPE: { + this.visitFunctionInstances(name, element); + break; + } + case ElementKind.CLASS_PROTOTYPE: { + this.visitClassInstances(name, element); + break; + } + case ElementKind.FIELD: { + let fieldInstance = element; + if (fieldInstance.is(CommonFlags.COMPILED)) this.visitField(name, fieldInstance); + break; + } + case ElementKind.PROPERTY_PROTOTYPE: { + let propertyInstance = (element).instance; + if (!propertyInstance) break; + element = propertyInstance; + // fall-through + } + case ElementKind.PROPERTY: { + let propertyInstance = element; + let getterInstance = propertyInstance.getterInstance; + if (getterInstance) this.visitFunction(name, getterInstance); + let setterInstance = propertyInstance.setterInstance; + if (setterInstance) this.visitFunction(name, setterInstance); + break; + } + case ElementKind.NAMESPACE: { + if (hasCompiledMember(element)) this.visitNamespace(name, element); + break; + } + case ElementKind.TYPEDEFINITION: break; + default: assert(false); + } + } + + private visitFunctionInstances(name: string, element: FunctionPrototype): void { + var instances = element.instances; + if (instances) { + // TODO: for (let instance of instances.values()) { + for (let _values = Map_values(instances), i = 0, k = _values.length; i < k; ++i) { + let instance = unchecked(_values[i]); + if (instance.is(CommonFlags.COMPILED)) this.visitFunction(name, instance); + } + } + } + + private visitClassInstances(name: string, element: ClassPrototype): void { + var instances = element.instances; + if (instances) { + // TODO: for (let instance of instances.values()) { + for (let _values = Map_values(instances), i = 0, k = _values.length; i < k; ++i) { + let instance = unchecked(_values[i]); + if (instance.is(CommonFlags.COMPILED)) this.visitClass(name, instance); + } + } + } + + abstract visitGlobal(name: string, element: Global): void; + abstract visitEnum(name: string, element: Enum): void; + abstract visitFunction(name: string, element: Function): void; + abstract visitClass(name: string, element: Class): void; + abstract visitInterface(name: string, element: Interface): void; + abstract visitField(name: string, element: Field): void; + abstract visitNamespace(name: string, element: Element): void; + abstract visitAlias(name: string, element: Element, originalName: string): void; +} + +// Helpers + +/** Tests if a namespace-like element has at least one compiled member. */ +export function hasCompiledMember(element: Element): bool { + var members = element.members; + if (members) { + // TODO: for (let member of members.values()) { + for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { + let member = unchecked(_values[i]); + switch (member.kind) { + case ElementKind.FUNCTION_PROTOTYPE: { + let instances = (member).instances; + if (instances) { + // TODO: for (let instance of instances.values()) { + for (let _values = Map_values(instances), j = 0, l = _values.length; j < l; ++j) { + let instance = unchecked(_values[j]); + if (instance.is(CommonFlags.COMPILED)) return true; + } + } + break; + } + case ElementKind.CLASS_PROTOTYPE: { + let instances = (member).instances; + if (instances) { + // TODO: for (let instance of instances.values()) { + for (let _values = Map_values(instances), j = 0, l = _values.length; j < l; ++j) { + let instance = unchecked(_values[j]); + if (instance.is(CommonFlags.COMPILED)) return true; + } + } + break; + } + default: { + if (member.is(CommonFlags.COMPILED) || hasCompiledMember(member)) return true; + break; + } + } + } + } + return false; +} diff --git a/src/builtins.ts b/src/builtins.ts index bc01631145..47ee2fe435 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -73,7 +73,8 @@ import { getConstValueF64, getLocalGetIndex, createType, - ExpressionRunnerFlags + ExpressionRunnerFlags, + mustPreserveSideEffects } from "./module"; import { @@ -700,6 +701,9 @@ export namespace BuiltinNames { // std/string.ts export const String_raw = "~lib/string/String.raw"; + export const String_eq = "~lib/string/String.__eq"; + export const String_ne = "~lib/string/String.__ne"; + export const String_not = "~lib/string/String.__not"; // std/bindings/wasi.ts export const wasiAbort = "~lib/wasi/index/abort"; @@ -741,10 +745,10 @@ export const function_builtins = new Map Express function builtin_isInteger(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isIntegerValue ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isIntegerValue ? 1 : 0)); } builtins.set(BuiltinNames.isInteger, builtin_isInteger); @@ -752,10 +756,10 @@ builtins.set(BuiltinNames.isInteger, builtin_isInteger); function builtin_isFloat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isFloatValue ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isFloatValue ? 1 : 0)); } builtins.set(BuiltinNames.isFloat, builtin_isFloat); @@ -763,10 +767,10 @@ builtins.set(BuiltinNames.isFloat, builtin_isFloat); function builtin_isBoolean(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isBooleanValue ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isBooleanValue ? 1 : 0)); } builtins.set(BuiltinNames.isBoolean, builtin_isBoolean); @@ -774,10 +778,10 @@ builtins.set(BuiltinNames.isBoolean, builtin_isBoolean); function builtin_isSigned(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isSignedIntegerValue ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isSignedIntegerValue ? 1 : 0)); } builtins.set(BuiltinNames.isSigned, builtin_isSigned); @@ -785,10 +789,10 @@ builtins.set(BuiltinNames.isSigned, builtin_isSigned); function builtin_isReference(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isReference ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isReference ? 1 : 0)); } builtins.set(BuiltinNames.isReference, builtin_isReference); @@ -796,14 +800,16 @@ builtins.set(BuiltinNames.isReference, builtin_isReference); function builtin_isString(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); var classReference = type.getClass(); - return module.i32( - classReference !== null && classReference.isAssignableTo(compiler.program.stringInstance) - ? 1 - : 0 + return reifyConstantType(ctx, + module.i32( + classReference && classReference.isAssignableTo(compiler.program.stringInstance) + ? 1 + : 0 + ) ); } builtins.set(BuiltinNames.isString, builtin_isString); @@ -812,14 +818,16 @@ builtins.set(BuiltinNames.isString, builtin_isString); function builtin_isArray(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); var classReference = type.getClass(); - return module.i32( - classReference !== null && classReference.extends(compiler.program.arrayPrototype) - ? 1 - : 0 + return reifyConstantType(ctx, + module.i32( + classReference && classReference.extends(compiler.program.arrayPrototype) + ? 1 + : 0 + ) ); } builtins.set(BuiltinNames.isArray, builtin_isArray); @@ -828,14 +836,16 @@ builtins.set(BuiltinNames.isArray, builtin_isArray); function builtin_isArrayLike(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); var classReference = type.getClass(); - return module.i32( - classReference !== null && classReference.isArrayLike - ? 1 - : 0 + return reifyConstantType(ctx, + module.i32( + classReference && classReference.isArrayLike + ? 1 + : 0 + ) ); } builtins.set(BuiltinNames.isArrayLike, builtin_isArrayLike); @@ -844,10 +854,10 @@ builtins.set(BuiltinNames.isArrayLike, builtin_isArrayLike); function builtin_isFunction(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isFunction ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isFunction ? 1 : 0)); } builtins.set(BuiltinNames.isFunction, builtin_isFunction); @@ -855,15 +865,19 @@ builtins.set(BuiltinNames.isFunction, builtin_isFunction); function builtin_isNullable(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isNullableReference ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isNullableReference ? 1 : 0)); } builtins.set(BuiltinNames.isNullable, builtin_isNullable); // isDefined(expression) -> bool function builtin_isDefined(ctx: BuiltinContext): ExpressionRef { + // Note that `isDefined` neither compiles nor evaluates the given expression + // but exclusively performs a check whether it can be compiled in theory. + // This is not exactly unsafe due to only seemingly having side effects which + // actually never happen, but may confuse tooling unaware of its semantics. var compiler = ctx.compiler; var module = compiler.module; compiler.currentType = Type.bool; @@ -877,7 +891,7 @@ function builtin_isDefined(ctx: BuiltinContext): ExpressionRef { Type.auto, ReportMode.SWALLOW ); - return module.i32(element !== null ? 1 : 0); + return module.i32(element ? 1 : 0); } builtins.set(BuiltinNames.isDefined, builtin_isDefined); @@ -892,7 +906,13 @@ function builtin_isConstant(ctx: BuiltinContext): ExpressionRef { ) return module.unreachable(); var expr = compiler.compileExpression(ctx.operands[0], Type.auto); compiler.currentType = Type.bool; - return module.i32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0); + if (!mustPreserveSideEffects(expr, module.ref)) { + return module.i32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0); + } + return module.block(null, [ + module.maybeDrop(expr), + module.i32(0) + ], getExpressionType(expr)); } builtins.set(BuiltinNames.isConstant, builtin_isConstant); @@ -900,10 +920,10 @@ builtins.set(BuiltinNames.isConstant, builtin_isConstant); function builtin_isManaged(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.isManaged ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.isManaged ? 1 : 0)); } builtins.set(BuiltinNames.isManaged, builtin_isManaged); @@ -911,10 +931,10 @@ builtins.set(BuiltinNames.isManaged, builtin_isManaged); function builtin_isVoid(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.bool; if (!type) return module.unreachable(); - return module.i32(type.kind == TypeKind.VOID ? 1 : 0); + return reifyConstantType(ctx, module.i32(type.kind == TypeKind.VOID ? 1 : 0)); } builtins.set(BuiltinNames.isVoid, builtin_isVoid); @@ -922,7 +942,7 @@ builtins.set(BuiltinNames.isVoid, builtin_isVoid); function builtin_lengthof(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.i32; if (!type) return module.unreachable(); var signatureReference = type.signatureReference; @@ -933,7 +953,7 @@ function builtin_lengthof(ctx: BuiltinContext): ExpressionRef { ); return module.unreachable(); } - return module.i32(signatureReference.parameterTypes.length); + return reifyConstantType(ctx, module.i32(signatureReference.parameterTypes.length)); } builtins.set(BuiltinNames.lengthof, builtin_lengthof); @@ -1021,7 +1041,7 @@ function builtin_offsetof(ctx: BuiltinContext): ExpressionRef { } let fieldName = (firstOperand).value; let classMembers = classReference.members; - if (classMembers !== null && classMembers.has(fieldName)) { + if (classMembers && classMembers.has(fieldName)) { let member = assert(classMembers.get(fieldName)); if (member.kind == ElementKind.FIELD) { return contextualUsize(compiler, i64_new((member).memoryOffset), contextualType); @@ -1041,7 +1061,7 @@ builtins.set(BuiltinNames.offsetof, builtin_offsetof); function builtin_nameof(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var resultType = evaluateConstantType(ctx); + var resultType = checkConstantType(ctx); if (!resultType) { compiler.currentType = compiler.program.stringInstance.type; return module.unreachable(); @@ -1058,7 +1078,7 @@ function builtin_nameof(ctx: BuiltinContext): ExpressionRef { } else { value = resultType.toString(); } - return compiler.ensureStaticString(value); + return reifyConstantType(ctx, compiler.ensureStaticString(value)); } builtins.set(BuiltinNames.nameof, builtin_nameof); @@ -1066,16 +1086,16 @@ builtins.set(BuiltinNames.nameof, builtin_nameof); function builtin_idof(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; - var type = evaluateConstantType(ctx); + var type = checkConstantType(ctx); compiler.currentType = Type.u32; if (!type) return module.unreachable(); let signatureReference = type.getSignature(); if (signatureReference) { - return module.i32(signatureReference.id); + return reifyConstantType(ctx, module.i32(signatureReference.id)); } let classReference = type.getClassOrWrapper(compiler.program); - if (classReference !== null && !classReference.hasDecorator(DecoratorFlags.UNMANAGED)) { - return module.i32(classReference.id); + if (classReference && !classReference.hasDecorator(DecoratorFlags.UNMANAGED)) { + return reifyConstantType(ctx, module.i32(classReference.id)); } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -2883,7 +2903,7 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { var numOperands = operands.length; var usizeType = compiler.options.usizeType; var offset: i64; - if (typeArguments !== null && typeArguments.length > 0) { // data(values[, align]) + if (typeArguments && typeArguments.length > 0) { // data(values[, align]) let elementType = typeArguments[0]; if (!elementType.isValue) { compiler.error( @@ -3893,7 +3913,7 @@ function builtin_v128_shuffle(ctx: BuiltinContext): ExpressionRef { if (type.isValue) { let laneWidth = type.byteSize; let laneCount = 16 / laneWidth; - assert(isInteger(laneCount) && isPowerOf2(laneCount)); + assert(Number.isInteger(laneCount) && isPowerOf2(laneCount)); if ( checkArgsRequired(ctx, 2 + laneCount) ) { @@ -9474,7 +9494,7 @@ export function compileVisitGlobals(compiler: Compiler): void { let globalType = global.type; let classReference = globalType.getClass(); if ( - classReference !== null && + classReference && !classReference.hasDecorator(DecoratorFlags.UNMANAGED) && global.is(CommonFlags.COMPILED) ) { @@ -9582,7 +9602,7 @@ function ensureVisitMembersOf(compiler: Compiler, instance: Class): void { for (let _values = Map_values(members), j = 0, l = _values.length; j < l; ++j) { let member = unchecked(_values[j]); if (member.kind == ElementKind.FIELD) { - if ((member).parent === instance) { + if ((member).parent == instance) { let fieldType = (member).type; if (fieldType.isManaged) { let fieldOffset = (member).memoryOffset; @@ -9738,7 +9758,7 @@ export function compileRTTI(compiler: Compiler): void { assert(instanceId == lastId++); let flags: TypeinfoFlags = 0; if (instance.isPointerfree) flags |= TypeinfoFlags.POINTERFREE; - if (instance !== abvInstance && instance.extends(abvPrototype)) { + if (instance != abvInstance && instance.extends(abvPrototype)) { let valueType = instance.getArrayValueType(); flags |= TypeinfoFlags.ARRAYBUFFERVIEW; flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(valueType); @@ -9804,7 +9824,7 @@ export function compileClassInstanceOf(compiler: Compiler, prototype: ClassProto // if (__instanceof(ref, ID[i])) return true var instances = prototype.instances; - if (instances !== null && instances.size > 0) { + if (instances && instances.size > 0) { // TODO: for (let instance of instances.values()) { for (let _values = Map_values(instances), i = 0, k = _values.length; i < k; ++i) { let instance = unchecked(_values[i]); @@ -9834,11 +9854,14 @@ export function compileClassInstanceOf(compiler: Compiler, prototype: ClassProto // Helpers -/** Evaluates the constant type of a type argument *or* expression. */ -function evaluateConstantType(ctx: BuiltinContext): Type | null { +var checkConstantType_expr: ExpressionRef = 0; + +/** Checks the constant type of a type argument *or* expression. */ +function checkConstantType(ctx: BuiltinContext): Type | null { var compiler = ctx.compiler; var operands = ctx.operands; var typeArguments = ctx.typeArguments; + checkConstantType_expr = 0; if (operands.length == 0) { // requires type argument if (!typeArguments || typeArguments.length != 1) { compiler.error( @@ -9850,7 +9873,7 @@ function evaluateConstantType(ctx: BuiltinContext): Type | null { return typeArguments[0]; } if (operands.length == 1) { // optional type argument - if (typeArguments !== null && typeArguments.length > 0) { + if (typeArguments && typeArguments.length > 0) { if (typeArguments.length > 1) { compiler.error( DiagnosticCode.Expected_0_type_arguments_but_got_1, @@ -9858,13 +9881,13 @@ function evaluateConstantType(ctx: BuiltinContext): Type | null { ); return null; } - compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT); + checkConstantType_expr = compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT); } else { - compiler.compileExpression(operands[0], Type.auto); + checkConstantType_expr = compiler.compileExpression(operands[0], Type.auto); } return compiler.currentType; } - if (typeArguments !== null && typeArguments.length > 1) { + if (typeArguments && typeArguments.length > 1) { compiler.error( DiagnosticCode.Expected_0_type_arguments_but_got_1, ctx.reportNode.typeArgumentsRange, "1", typeArguments.length.toString() @@ -9877,6 +9900,18 @@ function evaluateConstantType(ctx: BuiltinContext): Type | null { return null; } +/** Reifies a constant type check potentially involving an expression. */ +function reifyConstantType(ctx: BuiltinContext, expr: ExpressionRef): ExpressionRef { + var module = ctx.compiler.module; + if (checkConstantType_expr && mustPreserveSideEffects(checkConstantType_expr, module.ref)) { + expr = module.block(null, [ + module.maybeDrop(checkConstantType_expr), + expr + ], getExpressionType(expr)); + } + return expr; +} + /** Evaluates a compile-time constant immediate offset argument.*/ function evaluateImmediateOffset(expression: Expression, compiler: Compiler): i32 { var module = compiler.module; diff --git a/src/common.ts b/src/common.ts index 10ef6265de..c48f5e7005 100644 --- a/src/common.ts +++ b/src/common.ts @@ -179,6 +179,9 @@ export namespace CommonNames { export const ASC_FEATURE_MULTI_VALUE = "ASC_FEATURE_MULTI_VALUE"; export const ASC_FEATURE_GC = "ASC_FEATURE_GC"; export const ASC_FEATURE_MEMORY64 = "ASC_FEATURE_MEMORY64"; + export const ASC_FEATURE_FUNCTION_REFERENCES = "ASC_FEATURE_FUNCTION_REFERENCES"; + export const ASC_FEATURE_RELAXED_SIMD = "ASC_FEATURE_RELAXED_SIMD"; + export const ASC_FEATURE_EXTENDED_CONST = "ASC_FEATURE_EXTENDED_CONST"; 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 3236f589df..454720221d 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -56,10 +56,7 @@ import { import { CommonFlags, - INSTANCE_DELIMITER, STATIC_DELIMITER, - GETTER_PREFIX, - SETTER_PREFIX, INDEX_SUFFIX, CommonNames, Feature, @@ -74,6 +71,7 @@ import { Class, Element, ElementKind, + DeclaredElement, Enum, Field, FunctionPrototype, @@ -119,6 +117,7 @@ import { AssertionKind, SourceKind, FunctionTypeNode, + DecoratorNode, Statement, BlockStatement, @@ -197,7 +196,8 @@ import { uniqueMap, isPowerOf2, v128_zero, - readI32 + readI32, + isIdentifier } from "./util"; import { @@ -210,6 +210,7 @@ import { /** Compiler options. */ export class Options { + constructor() { /* as internref */ } /** WebAssembly target. Defaults to {@link Target.WASM32}. */ target: Target = Target.WASM32; @@ -235,8 +236,8 @@ export class Options { exportTable: bool = false; /** If true, generates information necessary for source maps. */ sourceMap: bool = false; - /** If true, generates an explicit start function. */ - explicitStart: bool = false; + /** If given, exports the start function instead of calling it implicitly. */ + exportStart: string | null = null; /** Static memory start offset. */ memoryBase: u32 = 0; /** Static table start offset. */ @@ -244,7 +245,10 @@ export class Options { /** Global aliases, mapping alias names as the key to internal names to be aliased as the value. */ globalAliases: Map | null = null; /** Features to activate by default. These are the finished proposals. */ - features: Feature = Feature.MUTABLE_GLOBALS | Feature.SIGN_EXTENSION; + features: Feature = Feature.MUTABLE_GLOBALS + | Feature.SIGN_EXTENSION + | Feature.NONTRAPPING_F2I + | Feature.BULK_MEMORY; /** If true, disallows unsafe features in user code. */ noUnsafe: bool = false; /** If true, enables pedantic diagnostics. */ @@ -266,6 +270,8 @@ export class Options { optimizeLevelHint: i32 = 0; /** Hinted shrink level. Not applied by the compiler itself. */ shrinkLevelHint: i32 = 0; + /** Hinted basename. */ + basenameHint: string = "output"; /** Tests if the target is WASM64 or, otherwise, WASM32. */ get isWasm64(): bool { @@ -338,8 +344,6 @@ export const enum RuntimeFeatures { /** Exported names of compiler-generated elements. */ export namespace ExportNames { - /** Name of the explicit start function, if applicable. */ - export const start = "_start"; // match WASI /** Name of the argumentsLength varargs helper global. */ export const argumentsLength = "__argumentsLength"; /** Name of the alternative argumentsLength setter function. */ @@ -401,6 +405,8 @@ export class Compiler extends DiagnosticEmitter { doneModuleExports: Set = new Set(); /** Shadow stack reference. */ shadowStack!: ShadowStackPass; + /** Whether the module has custom function exports. */ + hasCustomFunctionExports: bool = false; /** Compiles a {@link Program} to a {@link Module} using the specified options. */ static compile(program: Program): Module { @@ -428,7 +434,7 @@ export class Compiler extends DiagnosticEmitter { } var featureFlags: FeatureFlags = 0; if (options.hasFeature(Feature.SIGN_EXTENSION)) featureFlags |= FeatureFlags.SignExt; - if (options.hasFeature(Feature.MUTABLE_GLOBALS)) featureFlags |= FeatureFlags.MutableGloabls; + if (options.hasFeature(Feature.MUTABLE_GLOBALS)) featureFlags |= FeatureFlags.MutableGlobals; if (options.hasFeature(Feature.NONTRAPPING_F2I)) featureFlags |= FeatureFlags.TruncSat; if (options.hasFeature(Feature.BULK_MEMORY)) featureFlags |= FeatureFlags.BulkMemory; if (options.hasFeature(Feature.SIMD)) featureFlags |= FeatureFlags.SIMD; @@ -439,6 +445,9 @@ export class Compiler extends DiagnosticEmitter { if (options.hasFeature(Feature.MULTI_VALUE)) featureFlags |= FeatureFlags.MultiValue; if (options.hasFeature(Feature.GC)) featureFlags |= FeatureFlags.GC; if (options.hasFeature(Feature.MEMORY64)) featureFlags |= FeatureFlags.Memory64; + if (options.hasFeature(Feature.FUNCTION_REFERENCES)) featureFlags |= FeatureFlags.FunctionReferences; + if (options.hasFeature(Feature.RELAXED_SIMD)) featureFlags |= FeatureFlags.RelaxedSIMD; + if (options.hasFeature(Feature.EXTENDED_CONST)) featureFlags |= FeatureFlags.ExtendedConst; module.setFeatures(featureFlags); // set up the main start function @@ -484,17 +493,10 @@ export class Compiler extends DiagnosticEmitter { let file = unchecked(_values[i]); if (file.source.sourceKind == SourceKind.USER_ENTRY) { this.compileFile(file); - this.compileExports(file); + this.compileModuleExports(file); } } - // set up module exports - // TODO: for (let file of this.program.filesByName.values()) { - for (let _values = Map_values(this.program.filesByName), i = 0, k = _values.length; i < k; ++i) { - let file = unchecked(_values[i]); - if (file.source.sourceKind == SourceKind.USER_ENTRY) this.ensureModuleExports(file); - } - // compile and export runtime if requested if (this.options.exportRuntime) { for (let i = 0, k = runtimeFunctions.length; i < k; ++i) { @@ -735,10 +737,15 @@ export class Compiler extends DiagnosticEmitter { // compile the start function if not empty or if explicitly requested var startIsEmpty = !startFunctionBody.length; - var explicitStart = program.isWasi || options.explicitStart; - if (!startIsEmpty || explicitStart) { + var exportStart = options.exportStart; + if (program.isWasi && !exportStart) { + // Try to do the right thing for WASI. If the module has custom function + // exports it is likely a reactor, otherwise it is likely a command. + exportStart = this.hasCustomFunctionExports ? "_initialize" : "_start"; + } + if (!startIsEmpty || exportStart != null) { let signature = startFunctionInstance.signature; - if (!startIsEmpty && explicitStart) { + if (!startIsEmpty && exportStart != null) { module.addGlobal(BuiltinNames.started, TypeRef.I32, true, module.i32(0)); startFunctionBody.unshift( module.global_set(BuiltinNames.started, module.i32(1)) @@ -758,8 +765,17 @@ export class Compiler extends DiagnosticEmitter { module.flatten(startFunctionBody) ); startFunctionInstance.finalize(module, funcRef); - if (!explicitStart) module.setStart(funcRef); - else module.addFunctionExport(startFunctionInstance.internalName, ExportNames.start); + if (exportStart == null) module.setStart(funcRef); + else { + if (!isIdentifier(exportStart) || module.hasExport(exportStart)) { + this.error( + DiagnosticCode.Start_function_name_0_is_invalid_or_conflicts_with_another_export, + this.program.nativeRange, exportStart + ); + } else { + module.addFunctionExport(startFunctionInstance.internalName, exportStart); + } + } } // Run custom passes @@ -775,114 +791,38 @@ export class Compiler extends DiagnosticEmitter { // === Exports ================================================================================== - /** Applies the respective module exports for the specified file. */ - private ensureModuleExports(file: File): void { + /** Compiles the respective module exports for the specified entry file. */ + private compileModuleExports(file: File): void { var exports = file.exports; if (exports) { // TODO: for (let [elementName, element] of exports) { for (let _keys = Map_keys(exports), i = 0, k = _keys.length; i < k; ++i) { let elementName = unchecked(_keys[i]); let element = assert(exports.get(elementName)); - this.ensureModuleExport(elementName, element); + this.compileModuleExport(elementName, element); } } var exportsStar = file.exportsStar; if (exportsStar) { for (let i = 0, k = exportsStar.length; i < k; ++i) { - this.ensureModuleExports(exportsStar[i]); + this.compileModuleExports(exportsStar[i]); } } } - /** Applies the respective module export(s) for the specified element. */ - private ensureModuleExport(name: string, element: Element, prefix: string = ""): void { + /** Compiles the respective module export(s) for the specified element. */ + private compileModuleExport(name: string, element: DeclaredElement, prefix: string = ""): void { var module = this.module; switch (element.kind) { - - // traverse instances case ElementKind.FUNCTION_PROTOTYPE: { + // obtain the default instance let functionPrototype = element; - let functionInstances = functionPrototype.instances; - if (functionInstances !== null && functionInstances.size > 0) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(functionInstances), i = 0, k = _values.length; i < k; ++i) { - let instance = unchecked(_values[i]); - let instanceName = name; - if (instance.is(CommonFlags.GENERIC)) { - let fullName = instance.internalName; - instanceName += fullName.substring(fullName.lastIndexOf("<")); - } - this.ensureModuleExport(instanceName, instance, prefix); - } - } else if (functionPrototype.is(CommonFlags.GENERIC)) { - if (this.options.pedantic) { - this.pedantic( - DiagnosticCode.Exported_generic_function_or_class_has_no_concrete_instances, - functionPrototype.identifierNode.range - ); - } - } - break; - } - case ElementKind.CLASS_PROTOTYPE: { - let classPrototype = element; - let classInstances = classPrototype.instances; - if (classInstances !== null && classInstances.size > 0) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(classInstances), i = 0, k = _values.length; i < k; ++i) { - let instance = unchecked(_values[i]); - let instanceName = name; - if (instance.is(CommonFlags.GENERIC)) { - let fullName = instance.internalName; - instanceName += fullName.substring(fullName.lastIndexOf("<")); - } - this.ensureModuleExport(instanceName, instance, prefix); - } - } else if (classPrototype.is(CommonFlags.GENERIC)) { - if (this.options.pedantic) { - this.pedantic( - DiagnosticCode.Exported_generic_function_or_class_has_no_concrete_instances, - classPrototype.identifierNode.range - ); - } - } - break; - } - case ElementKind.PROPERTY_PROTOTYPE: { - let propertyInstance = (element).instance; - if (propertyInstance) this.ensureModuleExport(name, propertyInstance, prefix); - break; - } - - // export concrete elements - case ElementKind.GLOBAL: { - let global = element; - let isConst = global.is(CommonFlags.CONST) || global.is(CommonFlags.STATIC | CommonFlags.READONLY); - if (!isConst && !this.options.hasFeature(Feature.MUTABLE_GLOBALS)) { - this.error( - DiagnosticCode.Cannot_export_a_mutable_global, - global.identifierNode.range - ); - } else if (global.is(CommonFlags.COMPILED)) { - let exportName = prefix + name; - if (!module.hasExport(exportName)) { - module.addGlobalExport(element.internalName, exportName); - } - } - break; - } - case ElementKind.ENUMVALUE: { - let enumValue = element; - if (!enumValue.isImmutable && !this.options.hasFeature(Feature.MUTABLE_GLOBALS)) { - this.error( - DiagnosticCode.Cannot_export_a_mutable_global, - enumValue.identifierNode.range - ); - } else if (enumValue.is(CommonFlags.COMPILED)) { - let exportName = prefix + name; - if (!module.hasExport(exportName)) { - module.addGlobalExport(element.internalName, exportName); + if (!functionPrototype.is(CommonFlags.GENERIC)) { + let functionInstance = this.resolver.resolveFunction(functionPrototype, null); + if (functionInstance) { + this.compileModuleExport(name, functionInstance, prefix); } + return; } break; } @@ -895,108 +835,79 @@ export class Compiler extends DiagnosticEmitter { functionInstance = this.ensureVarargsStub(functionInstance); this.runtimeFeatures |= RuntimeFeatures.setArgumentsLength; } + this.compileFunction(functionInstance); if (functionInstance.is(CommonFlags.COMPILED)) { let exportName = prefix + name; if (!module.hasExport(exportName)) { module.addFunctionExport(functionInstance.internalName, exportName); + this.hasCustomFunctionExports = true; if (signature.hasManagedOperands) { this.shadowStack.noteExport(exportName, signature.getManagedOperandIndices()); } } + return; } } break; } - case ElementKind.PROPERTY: { - let propertyInstance = element; - let getterInstance = propertyInstance.getterInstance; - if (getterInstance) this.ensureModuleExport(GETTER_PREFIX + name, getterInstance, prefix); - let setterInstance = propertyInstance.setterInstance; - if (setterInstance) this.ensureModuleExport(SETTER_PREFIX + name, setterInstance, prefix); - break; - } - case ElementKind.FIELD: { - let fieldInstance = element; - if (element.is(CommonFlags.COMPILED)) { - let getterExportName = prefix + GETTER_PREFIX + name; - if (this.compileFieldGetter(fieldInstance) && !module.hasExport(getterExportName)) { - module.addFunctionExport(fieldInstance.internalGetterName, getterExportName); - let signature = fieldInstance.internalGetterSignature; - if (signature.hasManagedOperands) { - this.shadowStack.noteExport(getterExportName, signature.getManagedOperandIndices()); - } - } - if (!element.is(CommonFlags.READONLY)) { - let setterExportName = prefix + SETTER_PREFIX + name; - if (this.compileFieldSetter(fieldInstance) && !module.hasExport(setterExportName)) { - module.addFunctionExport(fieldInstance.internalSetterName, setterExportName); - let signature = fieldInstance.internalSetterSignature; - if (signature.hasManagedOperands) { - this.shadowStack.noteExport(setterExportName, signature.getManagedOperandIndices()); - } - } - } + case ElementKind.GLOBAL: { + let global = element; + let isConst = global.is(CommonFlags.CONST) || global.is(CommonFlags.STATIC | CommonFlags.READONLY); + if (!isConst && !this.options.hasFeature(Feature.MUTABLE_GLOBALS)) { + this.warning( + DiagnosticCode.Feature_0_is_not_enabled, + global.identifierNode.range, "mutable-globals" + ); + return; } - break; - } - case ElementKind.CLASS: { - let classInstance = element; - // make the class name itself represent its runtime id - if (!classInstance.type.isUnmanaged) { - let module = this.module; - let internalName = classInstance.internalName; - - if (!this.doneModuleExports.has(element)) { - module.addGlobal(internalName, TypeRef.I32, false, module.i32(classInstance.id)); - this.doneModuleExports.add(element); - } - + this.compileGlobal(global); + if (global.is(CommonFlags.COMPILED)) { let exportName = prefix + name; if (!module.hasExport(exportName)) { - module.addGlobalExport(internalName, exportName); + module.addGlobalExport(element.internalName, exportName); } + return; } break; } - - // just traverse members below - case ElementKind.ENUM: - case ElementKind.INTERFACE_PROTOTYPE: - case ElementKind.NAMESPACE: - case ElementKind.TYPEDEFINITION: - case ElementKind.INDEXSIGNATURE: break; - - default: assert(false); // unexpected module export - } - - // traverse members - var members = element.members; - if (members) { - let subPrefix = prefix + name + (element.kind == ElementKind.CLASS - ? INSTANCE_DELIMITER - : STATIC_DELIMITER - ); - if (element.kind == ElementKind.NAMESPACE) { - let implicitExport = element.is(CommonFlags.SCOPED); - // TODO: for (let [memberName, member] of members) { - for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { - let memberName = unchecked(_keys[i]); - let member = assert(members.get(memberName)); - if (implicitExport || member.is(CommonFlags.EXPORT)) { - this.ensureModuleExport(memberName, member, subPrefix); + case ElementKind.ENUM: { + this.compileEnum(element); + let members = element.members; + if (members) { + let subPrefix = prefix + name + STATIC_DELIMITER; + for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { + let memberName = unchecked(_keys[i]); + let member = assert(members.get(memberName)); + if (!member.is(CommonFlags.PRIVATE)) { + this.compileModuleExport(memberName, member, subPrefix); + } } } - } else { - // TODO: for (let [memberName, member] of members) { - for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { - let memberName = unchecked(_keys[i]); - let member = assert(members.get(memberName)); - if (!member.is(CommonFlags.PRIVATE)) { - this.ensureModuleExport(memberName, member, subPrefix); + return; + } + case ElementKind.ENUMVALUE: { + let enumValue = element; + if (!enumValue.isImmutable && !this.options.hasFeature(Feature.MUTABLE_GLOBALS)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + enumValue.identifierNode.range, "mutable-globals" + ); + return; + } + if (enumValue.is(CommonFlags.COMPILED)) { + let exportName = prefix + name; + if (!module.hasExport(exportName)) { + module.addGlobalExport(element.internalName, exportName); } + return; } + break; } } + this.warning( + DiagnosticCode.Only_variables_functions_and_enums_become_WebAssembly_module_exports, + element.identifierNode.range + ); } // === Elements ================================================================================= @@ -1050,26 +961,6 @@ export class Compiler extends DiagnosticEmitter { } } - /** Compiles a file's exports. */ - compileExports(file: File): void { - var exports = file.exports; - if (exports) { - // TODO: for (let element of exports.values()) { - for (let _values = Map_values(exports), i = 0, k = _values.length; i < k; ++i) { - let element = unchecked(_values[i]); - if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileElement(element); - } - } - var exportsStar = file.exportsStar; - if (exportsStar) { - for (let i = 0, k = exportsStar.length; i < k; ++i) { - let exportStar = unchecked(exportsStar[i]); - this.compileFile(exportStar); - this.compileExports(exportStar); - } - } - } - // files /** Compiles the file matching the specified path. */ @@ -1225,8 +1116,8 @@ export class Compiler extends DiagnosticEmitter { // Constant global or mutable globals enabled if (isDeclaredConstant || this.options.hasFeature(Feature.MUTABLE_GLOBALS)) { - global.set(CommonFlags.MODULE_IMPORT); mangleImportName(global, global.declaration); + this.program.markModuleImport(mangleImportName_moduleName, mangleImportName_elementName, global); module.addGlobalImport( global.internalName, mangleImportName_moduleName, @@ -1540,14 +1431,22 @@ export class Compiler extends DiagnosticEmitter { ); } - // cannot have an annotated external name - if (instance.hasDecorator(DecoratorFlags.EXTERNAL)) { + // cannot have an annotated external name or code + if (instance.hasAnyDecorator(DecoratorFlags.EXTERNAL | DecoratorFlags.EXTERNAL_JS)) { let decoratorNodes = instance.decoratorNodes; - let decorator = assert(findDecorator(DecoratorKind.EXTERNAL, decoratorNodes)); - this.error( - DiagnosticCode.Decorator_0_is_not_valid_here, - decorator.range, "external" - ); + let decorator: DecoratorNode | null; + if (decorator = findDecorator(DecoratorKind.EXTERNAL, decoratorNodes)) { + this.error( + DiagnosticCode.Decorator_0_is_not_valid_here, + decorator.range, "external" + ); + } + if (decorator = findDecorator(DecoratorKind.EXTERNAL_JS, decoratorNodes)) { + this.error( + DiagnosticCode.Decorator_0_is_not_valid_here, + decorator.range, "external.js" + ); + } } // compile body in this function's context @@ -1573,8 +1472,8 @@ export class Compiler extends DiagnosticEmitter { // imported function } else if (instance.is(CommonFlags.AMBIENT)) { - instance.set(CommonFlags.MODULE_IMPORT); mangleImportName(instance, declarationNode); // TODO: check for duplicates + this.program.markModuleImport(mangleImportName_moduleName, mangleImportName_elementName, instance); module.addFunctionImport( instance.internalName, mangleImportName_moduleName, @@ -1703,7 +1602,7 @@ export class Compiler extends DiagnosticEmitter { } // check that super has been called if this is a derived class - if (classInstance.base !== null && !flow.is(FlowFlags.CALLS_SUPER)) { + if (classInstance.base && !flow.is(FlowFlags.CALLS_SUPER)) { this.error( DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call, instance.prototype.declaration.range @@ -1901,7 +1800,7 @@ export class Compiler extends DiagnosticEmitter { if (setterInstance) { let ret = this.compileFunction(setterInstance); let getterInstance = instance.getterInstance; - if (getterInstance !== null && getterInstance.is(CommonFlags.COMPILED) && setterInstance.is(CommonFlags.COMPILED)) { + if (getterInstance && getterInstance.is(CommonFlags.COMPILED) && setterInstance.is(CommonFlags.COMPILED)) { instance.set(CommonFlags.COMPILED); } return ret; @@ -2144,7 +2043,7 @@ export class Compiler extends DiagnosticEmitter { } case NodeKind.FIELDDECLARATION: { let element = this.program.getElementByDeclaration(statement); - if (element !== null && element.kind == ElementKind.GLOBAL) { // static + if (element && element.kind == ElementKind.GLOBAL) { // static if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileGlobal(element); } break; @@ -2152,7 +2051,7 @@ export class Compiler extends DiagnosticEmitter { case NodeKind.EXPORT: { let exportStatement = statement; let internalPath = exportStatement.internalPath; - if (internalPath !== null) { + if (internalPath != null) { this.compileFileByPath(internalPath, assert(exportStatement.path)); } break; @@ -2264,6 +2163,10 @@ export class Compiler extends DiagnosticEmitter { stmt = module.unreachable(); break; } + case NodeKind.MODULE: { + stmt = module.nop(); + break; + } default: { assert(false); stmt = module.unreachable(); @@ -4050,16 +3953,13 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload - if (operator == Token.EQUALS_EQUALS) { // can't overload '===' - let classReference = leftType.getClassOrWrapper(this.program); - if (classReference) { - let overload = classReference.lookupOverload(OperatorKind.EQ); - if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, leftType, right, expression); - break; - } + let classReference = leftType.getClassOrWrapper(this.program); + if (classReference) { + let overload = classReference.lookupOverload(OperatorKind.EQ); + if (overload) { + expr = this.compileBinaryOverload(overload, left, leftExpr, leftType, right, expression); + break; } - // fall back to compare by value } rightExpr = this.compileExpression(right, leftType); @@ -4089,16 +3989,13 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload - if (operator == Token.EXCLAMATION_EQUALS) { // can't overload '!==' - let classReference = leftType.getClass(); - if (classReference) { - let overload = classReference.lookupOverload(OperatorKind.NE); - if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, leftType, right, expression); - break; - } + let classReference = leftType.getClass(); + if (classReference) { + let overload = classReference.lookupOverload(OperatorKind.NE); + if (overload) { + expr = this.compileBinaryOverload(overload, left, leftExpr, leftType, right, expression); + break; } - // fall back to compare by value } rightExpr = this.compileExpression(right, leftType); @@ -6001,7 +5898,7 @@ export class Compiler extends DiagnosticEmitter { // Cannot assign to readonly fields except in constructors if there's no initializer if (fieldInstance.is(CommonFlags.READONLY)) { - if (!isConstructor || initializerNode !== null) { + if (!isConstructor || initializerNode) { this.error( DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property, valueExpression.range, fieldInstance.internalName @@ -6455,7 +6352,7 @@ export class Compiler extends DiagnosticEmitter { case ElementKind.CLASS: { let classInstance = target; let typeArguments = classInstance.getTypeArgumentsTo(this.program.functionPrototype); - if (typeArguments !== null && typeArguments.length > 0) { + if (typeArguments && typeArguments.length > 0) { let ftype = typeArguments[0]; signature = ftype.getSignature(); functionArg = this.compileExpression(expression.expression, ftype, Constraints.CONV_IMPLICIT); @@ -7830,7 +7727,7 @@ export class Compiler extends DiagnosticEmitter { let functionPrototype = target; let typeParameterNodes = functionPrototype.typeParameterNodes; - if (typeParameterNodes !== null && typeParameterNodes.length != 0) { + if (typeParameterNodes && typeParameterNodes.length != 0) { this.error( DiagnosticCode.Type_argument_expected, expression.range @@ -7875,7 +7772,7 @@ export class Compiler extends DiagnosticEmitter { let namedType = isType; if (!(namedType.isNullable || namedType.hasTypeArguments)) { let element = this.resolver.resolveTypeName(namedType.name, flow.actualFunction, ReportMode.SWALLOW); - if (element !== null && element.kind == ElementKind.CLASS_PROTOTYPE) { + if (element && element.kind == ElementKind.CLASS_PROTOTYPE) { let prototype = element; if (prototype.is(CommonFlags.GENERIC)) { return this.makeInstanceofClass(expression, prototype); @@ -8148,7 +8045,7 @@ export class Compiler extends DiagnosticEmitter { var stringInstance = this.program.stringInstance; var stringType = stringInstance.type; - if (tag === null) { + if (!tag) { // Shortcut if just a (multi-line) string if (numParts == 1) { return this.ensureStaticString(parts[0]); @@ -8278,7 +8175,7 @@ export class Compiler extends DiagnosticEmitter { let parameterTypes = instance.signature.parameterTypes; if (parameterTypes.length) { let first = parameterTypes[0].getClass(); - if (first !== null && !first.extends(tsaArrayInstance.prototype)) { + if (first && !first.extends(tsaArrayInstance.prototype)) { arrayInstance = assert(this.resolver.resolveClass(this.program.arrayPrototype, [ stringType ])); } } @@ -8346,7 +8243,7 @@ export class Compiler extends DiagnosticEmitter { // handle static arrays let contextualClass = contextualType.getClass(); - if (contextualClass !== null && contextualClass.extends(program.staticArrayPrototype)) { + if (contextualClass && contextualClass.extends(program.staticArrayPrototype)) { return this.compileStaticArrayLiteral(expression, contextualType, constraints); } @@ -8679,7 +8576,7 @@ export class Compiler extends DiagnosticEmitter { for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { let memberKey = _keys[i]; let member = assert(members.get(memberKey)); - if (member !== null && member.kind == ElementKind.FIELD) { + if (member && member.kind == ElementKind.FIELD) { omittedFields.add(member); // incl. private/protected } } @@ -8840,7 +8737,7 @@ export class Compiler extends DiagnosticEmitter { var classReference: Class | null; if ( !typeArguments && - (classReference = contextualType.classReference) !== null && + (classReference = contextualType.classReference) && classReference.prototype == classPrototype && classReference.is(CommonFlags.GENERIC) ) { @@ -9334,7 +9231,7 @@ export class Compiler extends DiagnosticEmitter { let overload = classReference.lookupOverload(OperatorKind.POSTFIX_INC); if (overload) { let isInstance = overload.is(CommonFlags.INSTANCE); - if (tempLocal !== null && !isInstance) { // revert: static overload simply returns + if (tempLocal && !isInstance) { // revert: static overload simply returns getValue = getLocalSetValue(getValue); flow.freeTempLocal(tempLocal); tempLocal = null; @@ -9423,7 +9320,7 @@ export class Compiler extends DiagnosticEmitter { let overload = classReference.lookupOverload(OperatorKind.POSTFIX_DEC); if (overload) { let isInstance = overload.is(CommonFlags.INSTANCE); - if (tempLocal !== null && !isInstance) { // revert: static overload simply returns + if (tempLocal && !isInstance) { // revert: static overload simply returns getValue = getLocalSetValue(getValue); flow.freeTempLocal(tempLocal); tempLocal = null; @@ -9972,7 +9869,7 @@ export class Compiler extends DiagnosticEmitter { } else { let classReference = type.getClass(); if (classReference) { - if (classReference.prototype === stringInstance.prototype) { + if (classReference.prototype == stringInstance.prototype) { typeString = "string"; } else { typeString = "object"; @@ -10520,7 +10417,7 @@ export class Compiler extends DiagnosticEmitter { var stringInstance = program.stringInstance; var messageArg: ExpressionRef; - if (message !== null) { + if (message) { messageArg = this.compileExpression(message, stringInstance.type, Constraints.CONV_IMPLICIT); } else { messageArg = this.makeZero(stringInstance.type, codeLocation); @@ -10642,12 +10539,16 @@ function mangleImportName( mangleImportName_elementName = mangleInternalName( element.name, element.parent, element.is(CommonFlags.INSTANCE), true ); + // override module name if a `module` statement is present + let overriddenModuleName = declaration.overriddenModuleName; + if (overriddenModuleName) mangleImportName_moduleName = overriddenModuleName; + if (!element.hasDecorator(DecoratorFlags.EXTERNAL)) return; var program = element.program; var decorator = assert(findDecorator(DecoratorKind.EXTERNAL, declaration.decorators)); var args = decorator.args; - if (args !== null && args.length > 0) { + if (args && args.length > 0) { let arg = args[0]; // if one argument is given, override just the element name // if two arguments are given, override both module and element name diff --git a/src/definitions.ts b/src/definitions.ts deleted file mode 100644 index cdf6749d06..0000000000 --- a/src/definitions.ts +++ /dev/null @@ -1,687 +0,0 @@ -/** - * @fileoverview Builders for various definitions describing a module. - * - * - TSDBuilder: Creates a TypeScript definition file (.d.ts) - * - IDLBuilder: Creates a WebIDL interface definition (.webidl) - * - * @license Apache-2.0 - */ - -import { - CommonFlags -} from "./common"; - -import { - Program, - Element, - ElementKind, - Global, - Enum, - EnumValue, - Field, - Function, - FunctionPrototype, - Class, - ClassPrototype, - Namespace, - ConstantValueKind, - Interface, - Property, - PropertyPrototype, - File -} from "./program"; - -import { - Type, - TypeKind -} from "./types"; - -import { - SourceKind -} from "./ast"; - -import { - indent -} from "./util"; - -/** Walker base class. */ -export abstract class ExportsWalker { - - /** Program reference. */ - program: Program; - /** Whether to include private members */ - includePrivate: bool; - /** Already seen elements. */ - seen: Map = new Map(); - - /** Constructs a new Element walker. */ - constructor(program: Program, includePrivate: bool = false) { - this.program = program; - this.includePrivate = includePrivate; - } - - /** Walks all elements and calls the respective handlers. */ - walk(): void { - // TODO: for (let file of this.program.filesByName.values()) { - for (let _values = Map_values(this.program.filesByName), i = 0, k = _values.length; i < k; ++i) { - let file = unchecked(_values[i]); - if (file.source.sourceKind == SourceKind.USER_ENTRY) this.visitFile(file); - } - } - - /** Visits all exported elements of a file. */ - visitFile(file: File): void { - var exports = file.exports; - if (exports) { - // TODO: for (let [memberName, member] of exports) { - for (let _keys = Map_keys(exports), i = 0, k = _keys.length; i < k; ++i) { - let memberName = unchecked(_keys[i]); - let member = assert(exports.get(memberName)); - this.visitElement(memberName, member); - } - } - var exportsStar = file.exportsStar; - if (exportsStar) { - for (let i = 0, k = exportsStar.length; i < k; ++i) { - let exportStar = unchecked(exportsStar[i]); - this.visitFile(exportStar); - } - } - } - - /** Visits an element.*/ - visitElement(name: string, element: Element): void { - if (element.is(CommonFlags.PRIVATE) && !this.includePrivate) return; - var seen = this.seen; - if (!element.is(CommonFlags.INSTANCE) && seen.has(element)) { - this.visitAlias(name, element, assert(seen.get(element))); - return; - } - seen.set(element, name); - switch (element.kind) { - case ElementKind.GLOBAL: { - if (element.is(CommonFlags.COMPILED)) this.visitGlobal(name, element); - break; - } - case ElementKind.ENUM: { - if (element.is(CommonFlags.COMPILED)) this.visitEnum(name, element); - break; - } - case ElementKind.ENUMVALUE: break; // handled by visitEnum - case ElementKind.FUNCTION_PROTOTYPE: { - this.visitFunctionInstances(name, element); - break; - } - case ElementKind.CLASS_PROTOTYPE: { - this.visitClassInstances(name, element); - break; - } - case ElementKind.FIELD: { - let fieldInstance = element; - if (fieldInstance.is(CommonFlags.COMPILED)) this.visitField(name, fieldInstance); - break; - } - case ElementKind.PROPERTY_PROTOTYPE: { - let propertyInstance = (element).instance; - if (!propertyInstance) break; - element = propertyInstance; - // fall-through - } - case ElementKind.PROPERTY: { - let propertyInstance = element; - let getterInstance = propertyInstance.getterInstance; - if (getterInstance) this.visitFunction(name, getterInstance); - let setterInstance = propertyInstance.setterInstance; - if (setterInstance) this.visitFunction(name, setterInstance); - break; - } - case ElementKind.NAMESPACE: { - if (hasCompiledMember(element)) this.visitNamespace(name, element); - break; - } - case ElementKind.TYPEDEFINITION: break; - default: assert(false); - } - } - - private visitFunctionInstances(name: string, element: FunctionPrototype): void { - var instances = element.instances; - if (instances) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(instances), i = 0, k = _values.length; i < k; ++i) { - let instance = unchecked(_values[i]); - if (instance.is(CommonFlags.COMPILED)) this.visitFunction(name, instance); - } - } - } - - private visitClassInstances(name: string, element: ClassPrototype): void { - var instances = element.instances; - if (instances) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(instances), i = 0, k = _values.length; i < k; ++i) { - let instance = unchecked(_values[i]); - if (instance.is(CommonFlags.COMPILED)) this.visitClass(name, instance); - } - } - } - - abstract visitGlobal(name: string, element: Global): void; - abstract visitEnum(name: string, element: Enum): void; - abstract visitFunction(name: string, element: Function): void; - abstract visitClass(name: string, element: Class): void; - abstract visitInterface(name: string, element: Interface): void; - abstract visitField(name: string, element: Field): void; - abstract visitNamespace(name: string, element: Element): void; - abstract visitAlias(name: string, element: Element, originalName: string): void; -} - -/** A WebIDL definitions builder. */ -export class IDLBuilder extends ExportsWalker { - - /** Builds WebIDL definitions for the specified program. */ - static build(program: Program): string { - return new IDLBuilder(program).build(); - } - - private sb: string[] = []; - private indentLevel: i32 = 0; - - /** Constructs a new WebIDL builder. */ - constructor(program: Program, includePrivate: bool = false) { - super(program, includePrivate); - } - - visitGlobal(name: string, element: Global): void { - var sb = this.sb; - var isConst = element.is(CommonFlags.INLINED); - indent(sb, this.indentLevel); - if (isConst) sb.push("const "); - sb.push(this.typeToString(element.type)); - sb.push(" "); - sb.push(name); - if (isConst) { - switch (element.constantValueKind) { - case ConstantValueKind.INTEGER: { - sb.push(" = "); - sb.push(i64_to_string(element.constantIntegerValue)); - break; - } - case ConstantValueKind.FLOAT: { - sb.push(" = "); - sb.push(element.constantFloatValue.toString()); - break; - } - default: assert(false); - } - } - sb.push(";\n"); - } - - visitEnum(name: string, element: Enum): void { - var sb = this.sb; - indent(sb, this.indentLevel++); - sb.push("interface "); - sb.push(name); - sb.push(" {\n"); - var members = element.members; - if (members) { - // TODO: for (let [memberName, member] of members) { - for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { - let memberName = unchecked(_keys[i]); - let member = assert(members.get(memberName)); - if (member.kind == ElementKind.ENUMVALUE) { - let enumValue = member; - let isConst = enumValue.is(CommonFlags.INLINED); - indent(sb, this.indentLevel); - if (isConst) sb.push("const "); - else sb.push("readonly "); - sb.push("unsigned long "); - sb.push(memberName); - if (isConst) { - sb.push(" = "); - assert(enumValue.constantValueKind == ConstantValueKind.INTEGER); - sb.push(i64_low(enumValue.constantIntegerValue).toString()); - } - sb.push(";\n"); - } - } - // TODO: for (let member of members.values()) { - for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - if (member.kind != ElementKind.ENUMVALUE) this.visitElement(member.name, member); - } - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - - visitFunction(name: string, element: Function): void { - var sb = this.sb; - var signature = element.signature; - indent(sb, this.indentLevel); - sb.push(this.typeToString(signature.returnType)); - sb.push(" "); - sb.push(name); - sb.push("("); - var parameters = signature.parameterTypes; - var numParameters = parameters.length; - // var requiredParameters = signature.requiredParameters; - for (let i = 0; i < numParameters; ++i) { - if (i) sb.push(", "); - // if (i >= requiredParameters) sb.push("optional "); - sb.push(this.typeToString(parameters[i])); - sb.push(" "); - sb.push(element.getParameterName(i)); - } - sb.push(");\n"); - var members = element.members; - if (members !== null && members.size > 0) { - indent(sb, this.indentLevel); - sb.push("interface "); - sb.push(element.name); - sb.push(" {\n"); - // TODO: for (let member of members.values()) { - for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - this.visitElement(member.name, member); - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - } - - visitClass(name: string, element: Class): void { - var sb = this.sb; - indent(sb, this.indentLevel++); - sb.push("interface "); - sb.push(name); - sb.push(" {\n"); - // TODO - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - - visitInterface(name: string, element: Interface): void { - this.visitClass(name, element); - } - - visitField(name: string, element: Field): void { - // TODO - } - - visitNamespace(name: string, element: Namespace): void { - var sb = this.sb; - indent(sb, this.indentLevel++); - sb.push("interface "); - sb.push(name); - sb.push(" {\n"); - var members = element.members; - if (members) { - // TODO: for (let member of members.values()) { - for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - this.visitElement(member.name, member); - } - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - - visitAlias(name: string, element: Element, originalName: string): void { - // TODO - } - - typeToString(type: Type): string { - switch (type.kind) { - case TypeKind.I8: return "byte"; - case TypeKind.I16: return "short"; - case TypeKind.I32: return "long"; - case TypeKind.I64: return "long long"; - case TypeKind.ISIZE: return this.program.options.isWasm64 ? "long long" : "long"; - case TypeKind.U8: return "octet"; - case TypeKind.U16: return "unsigned short"; - case TypeKind.U32: return "unsigned long"; - // ^ TODO: function types - case TypeKind.U64: return "unsigned long long"; - case TypeKind.USIZE: return this.program.options.isWasm64 ? "unsigned long long" : "unsigned long"; - // ^ TODO: class types - case TypeKind.BOOL: return "boolean"; - case TypeKind.F32: return "unrestricted float"; - case TypeKind.F64: return "unrestricted double"; - case TypeKind.VOID: return "void"; - default: { - assert(false); - return ""; - } - } - } - - build(): string { - var sb = this.sb; - sb.push("interface ASModule {\n"); - ++this.indentLevel; - this.walk(); - --this.indentLevel; - sb.push("}\n"); - return sb.join(""); - } -} - -/** A TypeScript definitions builder. */ -export class TSDBuilder extends ExportsWalker { - - /** Builds TypeScript definitions for the specified program. */ - static build(program: Program): string { - return new TSDBuilder(program).build(); - } - - private sb: string[] = []; - private indentLevel: i32 = 0; - - /** Constructs a new WebIDL builder. */ - constructor(program: Program, includePrivate: bool = false) { - super(program, includePrivate); - } - - visitGlobal(name: string, element: Global): void { - var sb = this.sb; - var isConst = element.is(CommonFlags.INLINED); - indent(sb, this.indentLevel); - if (element.is(CommonFlags.STATIC)) { - if (isConst) sb.push("static readonly "); - else sb.push("static "); - } else { - if (isConst) sb.push("export const "); - else sb.push("export var "); - } - sb.push(name); - sb.push(": "); - sb.push(this.typeToString(element.type)); - sb.push(";\n"); - this.visitNamespace(name, element); - } - - visitEnum(name: string, element: Enum): void { - var sb = this.sb; - indent(sb, this.indentLevel++); - sb.push("export "); - if (element.is(CommonFlags.CONST)) sb.push("const "); - sb.push("enum "); - sb.push(name); - sb.push(" {\n"); - var members = element.members; - var remainingMembers = 0; - if (members) { - remainingMembers = members.size; - // TODO: for (let [memberName, member] of members) { - for (let _keys = Map_keys(members), i = 0, k = _keys.length; i < k; ++i) { - let memberName = unchecked(_keys[i]); - let member = assert(members.get(memberName)); - if (member.kind == ElementKind.ENUMVALUE) { - let enumValue = member; - indent(sb, this.indentLevel); - sb.push(memberName); - if (member.is(CommonFlags.INLINED)) { - sb.push(" = "); - assert(enumValue.constantValueKind == ConstantValueKind.INTEGER); - sb.push(i64_low(enumValue.constantIntegerValue).toString()); - } - sb.push(",\n"); - --remainingMembers; - } - } - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - if (remainingMembers) this.visitNamespace(name, element); - } - - visitFunction(name: string, element: Function): void { - if (element.isAny(CommonFlags.PRIVATE)) return; - var sb = this.sb; - var signature = element.signature; - indent(sb, this.indentLevel); - if (!element.isAny(CommonFlags.STATIC | CommonFlags.INSTANCE)) { - sb.push("export function "); - } else { - if (element.is(CommonFlags.PROTECTED)) sb.push("protected "); - if (element.is(CommonFlags.STATIC)) sb.push("static "); - if (element.is(CommonFlags.GET)) sb.push("get "); - else if (element.is(CommonFlags.SET)) sb.push("set "); - } - sb.push(name); - sb.push("("); - var parameters = signature.parameterTypes; - var numParameters = parameters.length; - var requiredParameters = signature.requiredParameters; - for (let i = 0; i < numParameters; ++i) { - if (i) sb.push(", "); - sb.push(element.getParameterName(i)); - if (i >= requiredParameters) sb.push("?"); - sb.push(": "); - sb.push(this.typeToString(parameters[i])); - } - if (element.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.SET)) { - sb.push(")"); - } else { - sb.push("): "); - sb.push(this.typeToString(signature.returnType)); - } - sb.push(";\n"); - this.visitNamespace(name, element); - } - - visitClass(name: string, element: Class): void { - var sb = this.sb; - var isInterface = element.kind == ElementKind.INTERFACE; - indent(sb, this.indentLevel++); - if (isInterface) { - sb.push("export interface "); - } else { - sb.push("export "); - if (element.is(CommonFlags.ABSTRACT)) sb.push("abstract "); - sb.push("class "); - } - sb.push(name); - var base = element.base; - if (base !== null && base.is(CommonFlags.COMPILED | CommonFlags.MODULE_EXPORT)) { - sb.push(" extends "); - let extendsNode = assert(element.prototype.extendsNode); - sb.push(extendsNode.name.identifier.text); // TODO: fqn? - } - sb.push(" {\n"); - if (!isInterface) { - indent(sb, this.indentLevel); - sb.push("static wrap(ptr: usize): "); - sb.push(name); - sb.push(";\n"); - indent(sb, this.indentLevel); - sb.push("valueOf(): usize;\n"); - } - var staticMembers = element.prototype.members; - if (staticMembers) { - // TODO: for (let member of staticMembers.values()) { - for (let _values = Map_values(staticMembers), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - this.visitElement(member.name, member); - } - } - var instanceMembers = element.members; - if (instanceMembers) { - // TODO: for (let member of instanceMembers.values()) { - for (let _values = Map_values(instanceMembers), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - if (member.parent == element) { // own member - this.visitElement(member.name, member); - } - } - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - - visitInterface(name: string, element: Interface): void { - this.visitClass(name, element); - } - - visitField(name: string, element: Field): void { - if (element.is(CommonFlags.PRIVATE)) return; - var sb = this.sb; - indent(sb, this.indentLevel); - if (element.is(CommonFlags.PROTECTED)) sb.push("protected "); - if (element.is(CommonFlags.STATIC)) sb.push("static "); - if (element.is(CommonFlags.READONLY)) sb.push("readonly "); - sb.push(name); - sb.push(": "); - sb.push(this.typeToString(element.type)); - sb.push(";\n"); - } - - visitNamespace(name: string, element: Element): void { - var members = element.members; - if (members !== null && members.size > 0) { - let sb = this.sb; - indent(sb, this.indentLevel++); - sb.push("export namespace "); - sb.push(name); - sb.push(" {\n"); - // TODO: for (let member of members.values()) { - for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - this.visitElement(member.name, member); - } - indent(sb, --this.indentLevel); - sb.push("}\n"); - } - } - - visitAlias(name: string, element: Element, originalName: string): void { - var sb = this.sb; - indent(sb, this.indentLevel); - sb.push("export const "); - sb.push(name); - sb.push(": typeof "); - sb.push(originalName); - sb.push(";\n"); - } - - typeToString(type: Type): string { - switch (type.kind) { - case TypeKind.I8: return "i8"; - case TypeKind.I16: return "i16"; - case TypeKind.I32: return "i32"; - case TypeKind.I64: return "i64"; - case TypeKind.ISIZE: return "isize"; - case TypeKind.U8: return "u8"; - case TypeKind.U16: return "u16"; - case TypeKind.U32: return "u32"; - // ^ TODO: function types - case TypeKind.U64: return "u64"; - case TypeKind.USIZE: return "usize"; - // ^ TODO: class types - case TypeKind.BOOL: return "bool"; - case TypeKind.F32: return "f32"; - case TypeKind.F64: return "f64"; - case TypeKind.V128: return "v128"; - case TypeKind.VOID: return "void"; - case TypeKind.FUNCREF: return "funcref"; - case TypeKind.EXTERNREF: return "externref"; - case TypeKind.ANYREF: return "anyref"; - case TypeKind.EQREF: return "eqref"; - case TypeKind.I31REF: return "i31ref"; - case TypeKind.DATAREF: return "dataref"; - default: { - assert(false); - return "any"; - } - } - } - - build(): string { - var sb = this.sb; - var options = this.program.options; - sb.push("type i8 = number;\n"); - sb.push("type i16 = number;\n"); - sb.push("type i32 = number;\n"); - sb.push("type i64 = bigint;\n"); - if (options.isWasm64) { - sb.push("type isize = bigint;\n"); - } else { - sb.push("type isize = number;\n"); - } - sb.push("type u8 = number;\n"); - sb.push("type u16 = number;\n"); - sb.push("type u32 = number;\n"); - sb.push("type u64 = bigint;\n"); - if (options.isWasm64) { - sb.push("type usize = bigint;\n"); - } else { - sb.push("type usize = number;\n"); - } - sb.push("type f32 = number;\n"); - sb.push("type f64 = number;\n"); - sb.push("type bool = boolean | number;\n"); - this.walk(); - if (options.exportMemory) { - sb.push("export const memory: WebAssembly.Memory;\n"); - } - if (options.exportTable) { - sb.push("export const table: WebAssembly.Table;\n"); - } - if (options.explicitStart) { - sb.push("export function _start(): void;\n"); - } - if (options.exportRuntime) { - sb.push("export function __new(size: usize, id: u32): usize;\n"); - sb.push("export function __pin(ptr: usize): usize;\n"); - sb.push("export function __unpin(ptr: usize): void;\n"); - sb.push("export function __collect(): void;\n"); - sb.push("export const __rtti_base: usize;\n"); - } - sb.push("export const __setArgumentsLength: ((n: i32) => void) | undefined;\n"); - return this.sb.join(""); - } -} - -// helpers - -/** Tests if a namespace-like element has at least one compiled member. */ -function hasCompiledMember(element: Element): bool { - var members = element.members; - if (members) { - // TODO: for (let member of members.values()) { - for (let _values = Map_values(members), i = 0, k = _values.length; i < k; ++i) { - let member = unchecked(_values[i]); - switch (member.kind) { - case ElementKind.FUNCTION_PROTOTYPE: { - let instances = (member).instances; - if (instances) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(instances), j = 0, l = _values.length; j < l; ++j) { - let instance = unchecked(_values[j]); - if (instance.is(CommonFlags.COMPILED)) return true; - } - } - break; - } - case ElementKind.CLASS_PROTOTYPE: { - let instances = (member).instances; - if (instances) { - // TODO: for (let instance of instances.values()) { - for (let _values = Map_values(instances), j = 0, l = _values.length; j < l; ++j) { - let instance = unchecked(_values[j]); - if (instance.is(CommonFlags.COMPILED)) return true; - } - } - break; - } - default: { - if (member.is(CommonFlags.COMPILED) || hasCompiledMember(member)) return true; - break; - } - } - } - } - return false; -} diff --git a/src/diagnosticMessages.generated.ts b/src/diagnosticMessages.generated.ts deleted file mode 100644 index a55d6f04ad..0000000000 --- a/src/diagnosticMessages.generated.ts +++ /dev/null @@ -1,383 +0,0 @@ -/** - * @fileoverview Generated from diagnosticsMessages.json. Do not edit. - * @license Apache-2.0 - */ - -/** Enum of available diagnostic codes. */ -export enum DiagnosticCode { - Not_implemented_0 = 100, - Operation_is_unsafe = 101, - User_defined_0 = 102, - Feature_0_is_not_enabled = 103, - Low_memory_limit_exceeded_by_static_data_0_1 = 104, - Module_requires_at_least_0_pages_of_initial_memory = 105, - Module_requires_at_least_0_pages_of_maximum_memory = 106, - Shared_memory_requires_maximum_memory_to_be_defined = 107, - Shared_memory_requires_feature_threads_to_be_enabled = 108, - Transform_0_1 = 109, - Conversion_from_type_0_to_1_requires_an_explicit_cast = 200, - Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit = 201, - Type_0_cannot_be_changed_to_type_1 = 202, - Operation_0_cannot_be_applied_to_type_1 = 203, - Type_0_cannot_be_nullable = 204, - Cannot_export_a_mutable_global = 205, - Mutable_value_cannot_be_inlined = 206, - Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa = 207, - Unmanaged_classes_cannot_implement_interfaces = 208, - Invalid_regular_expression_flags = 209, - Expression_is_never_null = 210, - Class_0_is_final_and_cannot_be_extended = 211, - Decorator_0_is_not_valid_here = 212, - Duplicate_decorator = 213, - Type_0_is_illegal_in_this_context = 214, - Optional_parameter_must_have_an_initializer = 215, - Class_0_cannot_declare_a_constructor_when_instantiated_from_an_object_literal = 216, - Function_0_cannot_be_inlined_into_itself = 217, - Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set = 218, - Optional_properties_are_not_supported = 219, - Expression_must_be_a_compile_time_constant = 220, - Type_0_is_not_a_function_index_or_function_reference = 221, - _0_must_be_a_value_between_1_and_2_inclusive = 222, - _0_must_be_a_power_of_two = 223, - _0_is_not_a_valid_operator = 224, - Expression_cannot_be_represented_by_a_type = 225, - Expression_resolves_to_unusual_type_0 = 226, - Array_literal_expected = 227, - Function_0_is_virtual_and_will_not_be_inlined = 228, - Property_0_only_has_a_setter_and_is_missing_a_getter = 229, - _0_keyword_cannot_be_used_here = 230, - A_class_with_a_constructor_explicitly_returning_something_else_than_this_must_be_final = 231, - Property_0_is_always_assigned_before_being_used = 233, - Expression_does_not_compile_to_a_value_at_runtime = 234, - Importing_the_table_disables_some_indirect_call_optimizations = 901, - Exporting_the_table_disables_some_indirect_call_optimizations = 902, - Expression_compiles_to_a_dynamic_check_at_runtime = 903, - Indexed_access_may_involve_bounds_checking = 904, - Explicitly_returning_constructor_drops_this_allocation = 905, - Unnecessary_definite_assignment = 906, - Exported_generic_function_or_class_has_no_concrete_instances = 907, - Unterminated_string_literal = 1002, - Identifier_expected = 1003, - _0_expected = 1005, - A_file_cannot_have_a_reference_to_itself = 1006, - Trailing_comma_not_allowed = 1009, - Unexpected_token = 1012, - A_rest_parameter_must_be_last_in_a_parameter_list = 1014, - Parameter_cannot_have_question_mark_and_initializer = 1015, - A_required_parameter_cannot_follow_an_optional_parameter = 1016, - _0_modifier_cannot_appear_on_class_elements_of_this_kind = 1031, - Statements_are_not_allowed_in_ambient_contexts = 1036, - Initializers_are_not_allowed_in_ambient_contexts = 1039, - _0_modifier_cannot_be_used_here = 1042, - A_rest_parameter_cannot_be_optional = 1047, - A_rest_parameter_cannot_have_an_initializer = 1048, - A_set_accessor_must_have_exactly_one_parameter = 1049, - A_set_accessor_parameter_cannot_have_an_initializer = 1052, - A_get_accessor_cannot_have_parameters = 1054, - Enum_member_must_have_initializer = 1061, - Type_parameters_cannot_appear_on_a_constructor_declaration = 1092, - Type_annotation_cannot_appear_on_a_constructor_declaration = 1093, - An_accessor_cannot_have_type_parameters = 1094, - A_set_accessor_cannot_have_a_return_type_annotation = 1095, - Type_parameter_list_cannot_be_empty = 1098, - Type_argument_list_cannot_be_empty = 1099, - A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement = 1104, - A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement = 1105, - A_return_statement_can_only_be_used_within_a_function_body = 1108, - Expression_expected = 1109, - Type_expected = 1110, - A_default_clause_cannot_appear_more_than_once_in_a_switch_statement = 1113, - Duplicate_label_0 = 1114, - An_export_assignment_cannot_have_modifiers = 1120, - Octal_literals_are_not_allowed_in_strict_mode = 1121, - Digit_expected = 1124, - Hexadecimal_digit_expected = 1125, - Unexpected_end_of_text = 1126, - Invalid_character = 1127, - _case_or_default_expected = 1130, - _super_must_be_followed_by_an_argument_list_or_member_access = 1034, - A_declare_modifier_cannot_be_used_in_an_already_ambient_context = 1038, - Type_argument_expected = 1140, - String_literal_expected = 1141, - Line_break_not_permitted_here = 1142, - Declaration_expected = 1146, - _const_declarations_must_be_initialized = 1155, - Unterminated_regular_expression_literal = 1161, - Interface_declaration_cannot_have_implements_clause = 1176, - Binary_digit_expected = 1177, - Octal_digit_expected = 1178, - An_implementation_cannot_be_declared_in_ambient_contexts = 1183, - The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer = 1190, - An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive = 1198, - Unterminated_Unicode_escape_sequence = 1199, - Decorators_are_not_valid_here = 1206, - _abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration = 1242, - Method_0_cannot_have_an_implementation_because_it_is_marked_abstract = 1245, - A_definite_assignment_assertion_is_not_permitted_in_this_context = 1255, - A_class_may_only_extend_another_class = 1311, - A_parameter_property_cannot_be_declared_using_a_rest_parameter = 1317, - An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal = 1351, - Duplicate_identifier_0 = 2300, - Cannot_find_name_0 = 2304, - Module_0_has_no_exported_member_1 = 2305, - An_interface_can_only_extend_an_interface = 2312, - Generic_type_0_requires_1_type_argument_s = 2314, - Type_0_is_not_generic = 2315, - Type_0_is_not_assignable_to_type_1 = 2322, - Property_0_is_private_in_type_1_but_not_in_type_2 = 2325, - Index_signature_is_missing_in_type_0 = 2329, - _this_cannot_be_referenced_in_current_location = 2332, - _this_cannot_be_referenced_in_constructor_arguments = 2333, - _super_can_only_be_referenced_in_a_derived_class = 2335, - _super_cannot_be_referenced_in_constructor_arguments = 2336, - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors = 2337, - Property_0_does_not_exist_on_type_1 = 2339, - Property_0_is_private_and_only_accessible_within_class_1 = 2341, - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures = 2349, - This_expression_is_not_constructable = 2351, - A_function_whose_declared_type_is_not_void_must_return_a_value = 2355, - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access = 2357, - The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access = 2364, - Operator_0_cannot_be_applied_to_types_1_and_2 = 2365, - A_super_call_must_be_the_first_statement_in_the_constructor = 2376, - Constructors_for_derived_classes_must_contain_a_super_call = 2377, - Getter_and_setter_accessors_do_not_agree_in_visibility = 2379, - _get_and_set_accessor_must_have_the_same_type = 2380, - Overload_signatures_must_all_be_public_private_or_protected = 2385, - Constructor_implementation_is_missing = 2390, - Function_implementation_is_missing_or_not_immediately_following_the_declaration = 2391, - Multiple_constructor_implementations_are_not_allowed = 2392, - Duplicate_function_implementation = 2393, - This_overload_signature_is_not_compatible_with_its_implementation_signature = 2394, - Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local = 2395, - Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2 = 2416, - A_class_can_only_implement_an_interface = 2422, - A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged = 2434, - Types_have_separate_declarations_of_a_private_property_0 = 2442, - Property_0_is_protected_in_type_1_but_public_in_type_2 = 2444, - Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses = 2445, - Variable_0_used_before_its_declaration = 2448, - Cannot_redeclare_block_scoped_variable_0 = 2451, - The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly = 2453, - Type_0_has_no_property_1 = 2460, - The_0_operator_cannot_be_applied_to_type_1 = 2469, - In_const_enum_declarations_member_initializer_must_be_constant_expression = 2474, - Export_declaration_conflicts_with_exported_declaration_of_0 = 2484, - _0_is_referenced_directly_or_indirectly_in_its_own_base_expression = 2506, - Cannot_create_an_instance_of_an_abstract_class = 2511, - Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_2 = 2515, - Object_is_possibly_null = 2531, - Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property = 2540, - The_target_of_an_assignment_must_be_a_variable_or_a_property_access = 2541, - Index_signature_in_type_0_only_permits_reading = 2542, - Expected_0_arguments_but_got_1 = 2554, - Expected_at_least_0_arguments_but_got_1 = 2555, - Expected_0_type_arguments_but_got_1 = 2558, - Property_0_has_no_initializer_and_is_not_assigned_in_the_constructor_before_this_is_used_or_returned = 2564, - Property_0_is_used_before_being_assigned = 2565, - A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums = 2651, - Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration = 2673, - Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration = 2674, - The_this_types_of_each_signature_are_incompatible = 2685, - Namespace_0_has_no_exported_member_1 = 2694, - Required_type_parameters_may_not_follow_optional_type_parameters = 2706, - Duplicate_property_0 = 2718, - Property_0_is_missing_in_type_1_but_required_in_type_2 = 2741, - Type_0_has_no_call_signatures = 2757, - File_0_not_found = 6054, - Numeric_separators_are_not_allowed_here = 6188, - Multiple_consecutive_numeric_separators_are_not_permitted = 6189, - _super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class = 17009, - _super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class = 17011 -} - -/** Translates a diagnostic code to its respective string. */ -export function diagnosticCodeToString(code: DiagnosticCode): string { - switch (code) { - case 100: return "Not implemented: {0}"; - case 101: return "Operation is unsafe."; - case 102: return "User-defined: {0}"; - case 103: return "Feature '{0}' is not enabled."; - case 104: return "Low memory limit exceeded by static data: {0} > {1}"; - case 105: return "Module requires at least '{0}' pages of initial memory."; - case 106: return "Module requires at least '{0}' pages of maximum memory."; - case 107: return "Shared memory requires maximum memory to be defined."; - case 108: return "Shared memory requires feature 'threads' to be enabled."; - case 109: return "Transform '{0}': {1}"; - case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; - case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; - case 202: return "Type '{0}' cannot be changed to type '{1}'."; - case 203: return "Operation '{0}' cannot be applied to type '{1}'."; - case 204: return "Type '{0}' cannot be nullable."; - case 205: return "Cannot export a mutable global."; - case 206: return "Mutable value cannot be inlined."; - case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; - case 208: return "Unmanaged classes cannot implement interfaces."; - case 209: return "Invalid regular expression flags."; - case 210: return "Expression is never 'null'."; - case 211: return "Class '{0}' is final and cannot be extended."; - case 212: return "Decorator '{0}' is not valid here."; - case 213: return "Duplicate decorator."; - case 214: return "Type '{0}' is illegal in this context."; - case 215: return "Optional parameter must have an initializer."; - case 216: return "Class '{0}' cannot declare a constructor when instantiated from an object literal."; - case 217: return "Function '{0}' cannot be inlined into itself."; - case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; - case 219: return "Optional properties are not supported."; - case 220: return "Expression must be a compile-time constant."; - case 221: return "Type '{0}' is not a function index or function reference."; - case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; - case 223: return "'{0}' must be a power of two."; - case 224: return "'{0}' is not a valid operator."; - case 225: return "Expression cannot be represented by a type."; - case 226: return "Expression resolves to unusual type '{0}'."; - case 227: return "Array literal expected."; - case 228: return "Function '{0}' is virtual and will not be inlined."; - case 229: return "Property '{0}' only has a setter and is missing a getter."; - case 230: return "'{0}' keyword cannot be used here."; - case 231: return "A class with a constructor explicitly returning something else than 'this' must be '@final'."; - case 233: return "Property '{0}' is always assigned before being used."; - case 234: return "Expression does not compile to a value at runtime."; - case 901: return "Importing the table disables some indirect call optimizations."; - case 902: return "Exporting the table disables some indirect call optimizations."; - case 903: return "Expression compiles to a dynamic check at runtime."; - case 904: return "Indexed access may involve bounds checking."; - case 905: return "Explicitly returning constructor drops 'this' allocation."; - case 906: return "Unnecessary definite assignment."; - case 907: return "Exported generic function or class has no concrete instances."; - case 1002: return "Unterminated string literal."; - case 1003: return "Identifier expected."; - case 1005: return "'{0}' expected."; - case 1006: return "A file cannot have a reference to itself."; - case 1009: return "Trailing comma not allowed."; - case 1012: return "Unexpected token."; - case 1014: return "A rest parameter must be last in a parameter list."; - case 1015: return "Parameter cannot have question mark and initializer."; - case 1016: return "A required parameter cannot follow an optional parameter."; - case 1031: return "'{0}' modifier cannot appear on class elements of this kind."; - case 1036: return "Statements are not allowed in ambient contexts."; - case 1039: return "Initializers are not allowed in ambient contexts."; - case 1042: return "'{0}' modifier cannot be used here."; - case 1047: return "A rest parameter cannot be optional."; - case 1048: return "A rest parameter cannot have an initializer."; - case 1049: return "A 'set' accessor must have exactly one parameter."; - case 1052: return "A 'set' accessor parameter cannot have an initializer."; - case 1054: return "A 'get' accessor cannot have parameters."; - case 1061: return "Enum member must have initializer."; - case 1092: return "Type parameters cannot appear on a constructor declaration."; - case 1093: return "Type annotation cannot appear on a constructor declaration."; - case 1094: return "An accessor cannot have type parameters."; - case 1095: return "A 'set' accessor cannot have a return type annotation."; - case 1098: return "Type parameter list cannot be empty."; - case 1099: return "Type argument list cannot be empty."; - case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; - case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; - case 1108: return "A 'return' statement can only be used within a function body."; - case 1109: return "Expression expected."; - case 1110: return "Type expected."; - case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; - case 1114: return "Duplicate label '{0}'."; - case 1120: return "An export assignment cannot have modifiers."; - case 1121: return "Octal literals are not allowed in strict mode."; - case 1124: return "Digit expected."; - case 1125: return "Hexadecimal digit expected."; - case 1126: return "Unexpected end of text."; - case 1127: return "Invalid character."; - case 1130: return "'case' or 'default' expected."; - case 1034: return "'super' must be followed by an argument list or member access."; - case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; - case 1140: return "Type argument expected."; - case 1141: return "String literal expected."; - case 1142: return "Line break not permitted here."; - case 1146: return "Declaration expected."; - case 1155: return "'const' declarations must be initialized."; - case 1161: return "Unterminated regular expression literal."; - case 1176: return "Interface declaration cannot have 'implements' clause."; - case 1177: return "Binary digit expected."; - case 1178: return "Octal digit expected."; - case 1183: return "An implementation cannot be declared in ambient contexts."; - case 1190: return "The variable declaration of a 'for...of' statement cannot have an initializer."; - case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; - case 1199: return "Unterminated Unicode escape sequence."; - case 1206: return "Decorators are not valid here."; - case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; - case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; - case 1255: return "A definite assignment assertion '!' is not permitted in this context."; - case 1311: return "A class may only extend another class."; - case 1317: return "A parameter property cannot be declared using a rest parameter."; - case 1351: return "An identifier or keyword cannot immediately follow a numeric literal."; - case 2300: return "Duplicate identifier '{0}'."; - case 2304: return "Cannot find name '{0}'."; - case 2305: return "Module '{0}' has no exported member '{1}'."; - case 2312: return "An interface can only extend an interface."; - case 2314: return "Generic type '{0}' requires {1} type argument(s)."; - case 2315: return "Type '{0}' is not generic."; - case 2322: return "Type '{0}' is not assignable to type '{1}'."; - case 2325: return "Property '{0}' is private in type '{1}' but not in type '{2}'."; - case 2329: return "Index signature is missing in type '{0}'."; - case 2332: return "'this' cannot be referenced in current location."; - case 2333: return "'this' cannot be referenced in constructor arguments."; - case 2335: return "'super' can only be referenced in a derived class."; - case 2336: return "'super' cannot be referenced in constructor arguments."; - case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; - case 2339: return "Property '{0}' does not exist on type '{1}'."; - case 2341: return "Property '{0}' is private and only accessible within class '{1}'."; - case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; - case 2351: return "This expression is not constructable."; - case 2355: return "A function whose declared type is not 'void' must return a value."; - case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; - case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; - case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; - case 2376: return "A 'super' call must be the first statement in the constructor."; - case 2377: return "Constructors for derived classes must contain a 'super' call."; - case 2379: return "Getter and setter accessors do not agree in visibility."; - case 2380: return "'get' and 'set' accessor must have the same type."; - case 2385: return "Overload signatures must all be public, private or protected."; - case 2390: return "Constructor implementation is missing."; - case 2391: return "Function implementation is missing or not immediately following the declaration."; - case 2392: return "Multiple constructor implementations are not allowed."; - case 2393: return "Duplicate function implementation."; - case 2394: return "This overload signature is not compatible with its implementation signature."; - case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; - case 2416: return "Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'."; - case 2422: return "A class can only implement an interface."; - case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; - case 2442: return "Types have separate declarations of a private property '{0}'."; - case 2444: return "Property '{0}' is protected in type '{1}' but public in type '{2}'."; - case 2445: return "Property '{0}' is protected and only accessible within class '{1}' and its subclasses."; - case 2448: return "Variable '{0}' used before its declaration."; - case 2451: return "Cannot redeclare block-scoped variable '{0}'"; - case 2453: return "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly."; - case 2460: return "Type '{0}' has no property '{1}'."; - case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; - case 2474: return "In 'const' enum declarations member initializer must be constant expression."; - case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; - case 2506: return "'{0}' is referenced directly or indirectly in its own base expression."; - case 2511: return "Cannot create an instance of an abstract class."; - case 2515: return "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from '{2}'."; - case 2531: return "Object is possibly 'null'."; - case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; - case 2541: return "The target of an assignment must be a variable or a property access."; - case 2542: return "Index signature in type '{0}' only permits reading."; - case 2554: return "Expected {0} arguments, but got {1}."; - case 2555: return "Expected at least {0} arguments, but got {1}."; - case 2558: return "Expected {0} type arguments, but got {1}."; - case 2564: return "Property '{0}' has no initializer and is not assigned in the constructor before 'this' is used or returned."; - case 2565: return "Property '{0}' is used before being assigned."; - case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; - case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; - case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; - case 2685: return "The 'this' types of each signature are incompatible."; - case 2694: return "Namespace '{0}' has no exported member '{1}'."; - case 2706: return "Required type parameters may not follow optional type parameters."; - case 2718: return "Duplicate property '{0}'."; - case 2741: return "Property '{0}' is missing in type '{1}' but required in type '{2}'."; - case 2757: return "Type '{0}' has no call signatures."; - case 6054: return "File '{0}' not found."; - case 6188: return "Numeric separators are not allowed here."; - case 6189: return "Multiple consecutive numeric separators are not permitted."; - case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; - case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; - default: return ""; - } -} diff --git a/src/diagnosticMessages.json b/src/diagnosticMessages.json index 15fa9b38ed..5ff99ccc9e 100644 --- a/src/diagnosticMessages.json +++ b/src/diagnosticMessages.json @@ -9,13 +9,13 @@ "Shared memory requires maximum memory to be defined.": 107, "Shared memory requires feature 'threads' to be enabled.": 108, "Transform '{0}': {1}": 109, + "Start function name '{0}' is invalid or conflicts with another export.": 110, "Conversion from type '{0}' to '{1}' requires an explicit cast.": 200, "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.": 201, "Type '{0}' cannot be changed to type '{1}'.": 202, "Operation '{0}' cannot be applied to type '{1}'.": 203, "Type '{0}' cannot be nullable.": 204, - "Cannot export a mutable global.": 205, "Mutable value cannot be inlined.": 206, "Unmanaged classes cannot extend managed classes and vice-versa.": 207, "Unmanaged classes cannot implement interfaces.": 208, @@ -44,6 +44,7 @@ "A class with a constructor explicitly returning something else than 'this' must be '@final'.": 231, "Property '{0}' is always assigned before being used.": 233, "Expression does not compile to a value at runtime.": 234, + "Only variables, functions and enums become WebAssembly module exports.": 235, "Importing the table disables some indirect call optimizations.": 901, "Exporting the table disables some indirect call optimizations.": 902, @@ -51,7 +52,6 @@ "Indexed access may involve bounds checking.": 904, "Explicitly returning constructor drops 'this' allocation.": 905, "Unnecessary definite assignment.": 906, - "Exported generic function or class has no concrete instances.": 907, "Unterminated string literal.": 1002, "Identifier expected.": 1003, diff --git a/src/diagnostics.ts b/src/diagnostics.ts index 3fe2ecb821..ae9221b4c5 100644 --- a/src/diagnostics.ts +++ b/src/diagnostics.ts @@ -102,9 +102,9 @@ export class DiagnosticMessage { arg2: string | null = null ): DiagnosticMessage { var message = diagnosticCodeToString(code); - if (arg0 !== null) message = message.replace("{0}", arg0); - if (arg1 !== null) message = message.replace("{1}", arg1); - if (arg2 !== null) message = message.replace("{2}", arg2); + if (arg0 != null) message = message.replace("{0}", arg0); + if (arg1 != null) message = message.replace("{1}", arg1); + if (arg2 != null) message = message.replace("{2}", arg2); return new DiagnosticMessage(code, category, message); } @@ -122,7 +122,7 @@ export class DiagnosticMessage { var otherRelatedRange = other.relatedRange; if (thisRelatedRange) { if (!otherRelatedRange || !thisRelatedRange.equals(otherRelatedRange)) return false; - } else if (otherRange) { + } else if (otherRelatedRange) { return false; } return this.message == other.message; diff --git a/src/extra/ast.ts b/src/extra/ast.ts index cbffac40fb..2ba8f449ae 100644 --- a/src/extra/ast.ts +++ b/src/extra/ast.ts @@ -65,6 +65,7 @@ import { TryStatement, VariableStatement, WhileStatement, + ModuleDeclaration, DeclarationStatement, ClassDeclaration, @@ -95,7 +96,8 @@ import { import { CharCode, - indent + indent, + escapeString } from "../util"; import { @@ -288,6 +290,10 @@ export class ASTBuilder { this.visitWhileStatement(node); break; } + case NodeKind.MODULE: { + this.visitModuleDeclaration(node); + break; + } // declaration statements @@ -499,7 +505,7 @@ export class ASTBuilder { indent(sb, this.indentLevel); let name = names[i]; let value = values[i]; - if (name === value) { + if (name == value) { this.visitNode(name); } else { this.visitNode(name); @@ -678,103 +684,10 @@ export class ASTBuilder { visitStringLiteral(str: string): void { var sb = this.sb; sb.push("\""); - this.visitRawString(str, CharCode.DOUBLEQUOTE); + sb.push(escapeString(str, CharCode.DOUBLEQUOTE)); sb.push("\""); } - private visitRawString(str: string, quote: CharCode): void { - var sb = this.sb; - var off = 0; - var i = 0; - for (let k = str.length; i < k;) { - switch (str.charCodeAt(i)) { - case CharCode.NULL: { - if (i > off) sb.push(str.substring(off, off = i + 1)); - sb.push("\\0"); - off = ++i; - break; - } - case CharCode.BACKSPACE: { - if (i > off) sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\b"); - break; - } - case CharCode.TAB: { - if (i > off) sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\t"); - break; - } - case CharCode.LINEFEED: { - if (i > off) sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\n"); - break; - } - case CharCode.VERTICALTAB: { - if (i > off) sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\v"); - break; - } - case CharCode.FORMFEED: { - if (i > off) sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\f"); - break; - } - case CharCode.CARRIAGERETURN: { - if (i > off) sb.push(str.substring(off, i)); - sb.push("\\r"); - off = ++i; - break; - } - case CharCode.DOUBLEQUOTE: { - if (quote == CharCode.DOUBLEQUOTE) { - if (i > off) sb.push(str.substring(off, i)); - sb.push("\\\""); - off = ++i; - } else { - ++i; - } - break; - } - case CharCode.SINGLEQUOTE: { - if (quote == CharCode.SINGLEQUOTE) { - if (i > off) sb.push(str.substring(off, i)); - sb.push("\\'"); - off = ++i; - } else { - ++i; - } - break; - } - case CharCode.BACKSLASH: { - if (i > off) sb.push(str.substring(off, i)); - sb.push("\\\\"); - off = ++i; - break; - } - case CharCode.BACKTICK: { - if (quote == CharCode.BACKTICK) { - if (i > off) sb.push(str.substring(off, i)); - sb.push("\\`"); - off = ++i; - } else { - ++i; - } - break; - } - default: { - ++i; - break; - } - } - } - if (i > off) sb.push(str.substring(off, i)); - } - visitStringLiteralExpression(node: StringLiteralExpression): void { this.visitStringLiteral(node.value); } @@ -786,13 +699,13 @@ export class ASTBuilder { var expressions = node.expressions; if (tag) this.visitNode(tag); sb.push("`"); - this.visitRawString(parts[0], CharCode.BACKTICK); + sb.push(escapeString(parts[0], CharCode.BACKTICK)); assert(parts.length == expressions.length + 1); for (let i = 0, k = expressions.length; i < k; ++i) { sb.push("${"); this.visitNode(expressions[i]); sb.push("}"); - this.visitRawString(parts[i + 1], CharCode.BACKTICK); + sb.push(escapeString(parts[i + 1], CharCode.BACKTICK)); } sb.push("`"); } @@ -970,7 +883,7 @@ export class ASTBuilder { var indexSignature = node.indexSignature; var members = node.members; var numMembers = members.length; - if (indexSignature !== null || numMembers) { + if (indexSignature || numMembers) { sb.push(" {\n"); let indentLevel = ++this.indentLevel; if (indexSignature) { @@ -1563,6 +1476,16 @@ export class ASTBuilder { this.visitTypeNode(node.type); } + visitModuleDeclaration(node: ModuleDeclaration): void { + var sb = this.sb; + if (node.flags & CommonFlags.DECLARE) { + sb.push("declare "); + } + sb.push("module \""); + sb.push(escapeString(node.moduleName, CharCode.DOUBLEQUOTE)); + sb.push("\""); + } + visitVariableDeclaration(node: VariableDeclaration): void { this.visitIdentifierExpression(node.name); var type = node.type; diff --git a/src/flow.ts b/src/flow.ts index c40c23686c..7f302a706c 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -64,8 +64,11 @@ import { getCallTarget, getLocalSetIndex, getIfCondition, - getConstValueI64High, - getUnaryValue + getUnaryValue, + getCallOperandAt, + getCallOperandCount, + isConstZero, + isConstNonZero } from "./module"; import { @@ -84,6 +87,10 @@ import { uniqueMap } from "./util"; +import { + BuiltinNames +} from "./builtins"; + /** Control flow flags indicating specific conditions. */ export const enum FlowFlags { /** No specific conditions. */ @@ -237,7 +244,7 @@ export class Flow { /** Tests if this is an inline flow. */ get isInline(): bool { - return this.inlineFunction !== null; + return this.inlineFunction != null; } /** Gets the actual function being compiled, The inlined function when inlining, otherwise the parent function. */ @@ -335,7 +342,7 @@ export class Flow { } var local: Local; if (except) { - if (temps !== null && temps.length > 0) { + if (temps && temps.length > 0) { for (let i = 0, k = temps.length; i < k; ++i) { if (!except.has(temps[i].index)) { local = temps[i]; @@ -351,7 +358,7 @@ export class Flow { } local = parentFunction.addLocal(type); } else { - if (temps !== null && temps.length > 0) { + if (temps && temps.length > 0) { local = assert(temps.pop()); local.type = type; local.flags = CommonFlags.NONE; @@ -447,7 +454,7 @@ export class Flow { /** Gets the scoped local of the specified name. */ getScopedLocal(name: string): Local | null { var scopedLocals = this.scopedLocals; - if (scopedLocals !== null && scopedLocals.has(name)) return assert(scopedLocals.get(name)); + if (scopedLocals && scopedLocals.has(name)) return assert(scopedLocals.get(name)); return null; } @@ -554,7 +561,7 @@ export class Flow { var current: Flow | null = this; do { let scope = current.scopedLocals; - if (scope !== null && scope.has(name)) return assert(scope.get(name)); + if (scope && scope.has(name)) return assert(scope.get(name)); current = current.parent; } while (current); var localsByName = this.parentFunction.localsByName; @@ -617,7 +624,7 @@ export class Flow { // guaranteed by super field.parent != actualClass || // has field initializer - field.initializerNode !== null || + field.initializerNode || // is initialized as a ctor parameter field.prototype.parameterIndex != -1 || // is safe to initialize with zero @@ -754,7 +761,7 @@ export class Flow { if (thisFlags & FlowFlags.CONTINUES) { // nothing can change that newFlags |= FlowFlags.CONTINUES; - } else if (other.continueLabel === this.continueLabel) { + } else if (other.continueLabel == this.continueLabel) { if (otherFlags & FlowFlags.CONTINUES) { newFlags |= FlowFlags.CONDITIONALLY_CONTINUES; } else { @@ -956,9 +963,9 @@ export class Flow { var numThisLocalFlags = before.localFlags.length; var numOtherLocalFlags = after.localFlags.length; var parentFunction = before.parentFunction; - assert(parentFunction === after.parentFunction); + assert(parentFunction == after.parentFunction); var localsByIndex = parentFunction.localsByIndex; - assert(localsByIndex === after.parentFunction.localsByIndex); + assert(localsByIndex == after.parentFunction.localsByIndex); for (let i = 0, k = min(numThisLocalFlags, numOtherLocalFlags); i < k; ++i) { let local = localsByIndex[i]; let type = local.type; @@ -1046,17 +1053,11 @@ export class Flow { } case ExpressionId.If: { let ifFalse = getIfFalse(expr); - if (!ifFalse) break; - if (getExpressionId(ifFalse) == ExpressionId.Const) { + if (ifFalse && isConstZero(ifFalse)) { // Logical AND: (if (condition ifTrue 0)) // the only way this had become true is if condition and ifTrue are true - if ( - (getExpressionType(ifFalse) == TypeRef.I32 && getConstValueI32(ifFalse) == 0) || - (getExpressionType(ifFalse) == TypeRef.I64 && getConstValueI64Low(ifFalse) == 0 && getConstValueI64High(ifFalse) == 0) - ) { - this.inheritNonnullIfTrue(getIfCondition(expr), iff); - this.inheritNonnullIfTrue(getIfTrue(expr), iff); - } + this.inheritNonnullIfTrue(getIfCondition(expr), iff); + this.inheritNonnullIfTrue(getIfTrue(expr), iff); } break; } @@ -1072,42 +1073,24 @@ export class Flow { } case ExpressionId.Binary: { switch (getBinaryOp(expr)) { - case BinaryOp.EqI32: { - let left = getBinaryLeft(expr); - let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) { - this.inheritNonnullIfTrue(right, iff); // TRUE == right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) { - this.inheritNonnullIfTrue(left, iff); // left == TRUE -> left must have been true - } - break; - } + case BinaryOp.EqI32: case BinaryOp.EqI64: { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) { + if (isConstNonZero(left)) { this.inheritNonnullIfTrue(right, iff); // TRUE == right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 && getConstValueI64High(right) != 0)) { + } else if (isConstNonZero(right)) { this.inheritNonnullIfTrue(left, iff); // left == TRUE -> left must have been true } break; } - case BinaryOp.NeI32: { - let left = getBinaryLeft(expr); - let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) { - this.inheritNonnullIfTrue(right, iff); // FALSE != right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) { - this.inheritNonnullIfTrue(left, iff); // left != FALSE -> left must have been true - } - break; - } + case BinaryOp.NeI32: case BinaryOp.NeI64: { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) { + if (isConstZero(left)) { this.inheritNonnullIfTrue(right, iff); // FALSE != right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) { + } else if (isConstZero(right)) { this.inheritNonnullIfTrue(left, iff); // left != FALSE -> left must have been true } break; @@ -1115,6 +1098,36 @@ export class Flow { } break; } + case ExpressionId.Call: { + // handle string eq/ne/not overloads + let name = getCallTarget(expr); + if (name == BuiltinNames.String_eq) { + assert(getCallOperandCount(expr) == 2); + let left = getCallOperandAt(expr, 0); + let right = getCallOperandAt(expr, 1); + if (isConstNonZero(left)) { + this.inheritNonnullIfTrue(right, iff); // TRUE == right -> right must have been true + } else if (isConstNonZero(right)) { + this.inheritNonnullIfTrue(left, iff); // left == TRUE -> left must have been true + } + } else if (name == BuiltinNames.String_ne) { + assert(getCallOperandCount(expr) == 2); + let left = getCallOperandAt(expr, 0); + let right = getCallOperandAt(expr, 1); + if (isConstZero(left)) { + this.inheritNonnullIfTrue(right, iff); // FALSE != right -> right must have been true + } else if (isConstZero(right)) { + this.inheritNonnullIfTrue(left, iff); // left != FALSE -> left must have been true + } + } else if (name == BuiltinNames.String_not) { + assert(getCallOperandCount(expr) == 1); + this.inheritNonnullIfFalse(getCallOperandAt(expr, 0), iff); // !value -> value must have been false + } else if (name == BuiltinNames.tostack) { + assert(getCallOperandCount(expr) == 1); + this.inheritNonnullIfTrue(getCallOperandAt(expr, 0), iff); + } + break; + } } } @@ -1139,69 +1152,73 @@ export class Flow { } case ExpressionId.If: { let ifTrue = getIfTrue(expr); - if (getExpressionId(ifTrue) == ExpressionId.Const) { - let ifFalse = getIfFalse(expr); - if (!ifFalse) break; + let ifFalse = getIfFalse(expr); + if (ifFalse && isConstNonZero(ifTrue)) { // Logical OR: (if (condition 1 ifFalse)) // the only way this had become false is if condition and ifFalse are false - let exprType = getExpressionType(ifTrue); - if ( - (exprType == TypeRef.I32 && getConstValueI32(ifTrue) != 0) || - (exprType == TypeRef.I64 && (getConstValueI64Low(ifTrue) != 0 || getConstValueI64High(ifTrue) != 0)) - ) { - this.inheritNonnullIfFalse(getIfCondition(expr), iff); - this.inheritNonnullIfFalse(getIfFalse(expr), iff); - } - + this.inheritNonnullIfFalse(getIfCondition(expr), iff); + this.inheritNonnullIfFalse(getIfFalse(expr), iff); } break; } case ExpressionId.Binary: { switch (getBinaryOp(expr)) { // remember: we want to know how the _entire_ expression became FALSE (!) - case BinaryOp.EqI32: { - let left = getBinaryLeft(expr); - let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) { - this.inheritNonnullIfTrue(right, iff); // FALSE == right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) { - this.inheritNonnullIfTrue(left, iff); // left == FALSE -> left must have been true - } - break; - } + case BinaryOp.EqI32: case BinaryOp.EqI64: { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) { - this.inheritNonnullIfTrue(right, iff); // FALSE == right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) { - this.inheritNonnullIfTrue(left, iff); // left == FALSE -> left must have been true - } - break; - } - case BinaryOp.NeI32: { - let left = getBinaryLeft(expr); - let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) { - this.inheritNonnullIfTrue(right, iff); // TRUE != right -> right must have been true - } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) { - this.inheritNonnullIfTrue(left, iff); // left != TRUE -> left must have been true + if (isConstZero(left)) { + this.inheritNonnullIfTrue(right, iff); // !(FALSE == right) -> right must have been true + } else if (isConstZero(right)) { + this.inheritNonnullIfTrue(left, iff); // !(left == FALSE) -> left must have been true } break; } + case BinaryOp.NeI32: case BinaryOp.NeI64: { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); - if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) { - this.inheritNonnullIfTrue(right, iff); // TRUE != right -> right must have been true for this to become false - } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 || getConstValueI64High(right) != 0)) { - this.inheritNonnullIfTrue(left, iff); // left != TRUE -> left must have been true for this to become false + if (isConstNonZero(left)) { + this.inheritNonnullIfTrue(right, iff); // !(TRUE != right) -> right must have been true + } else if (isConstNonZero(right)) { + this.inheritNonnullIfTrue(left, iff); // !(left != TRUE) -> left must have been true } break; } } break; } + case ExpressionId.Call: { + // handle string eq/ne/not overloads + let name = getCallTarget(expr); + if (name == BuiltinNames.String_eq) { + assert(getCallOperandCount(expr) == 2); + let left = getCallOperandAt(expr, 0); + let right = getCallOperandAt(expr, 1); + if (isConstZero(left)) { + this.inheritNonnullIfTrue(right, iff); // !(FALSE == right) -> right must have been true + } else if (isConstZero(right)) { + this.inheritNonnullIfTrue(left, iff); // !(left == FALSE) -> left must have been true + } + } else if (name == BuiltinNames.String_ne) { + assert(getCallOperandCount(expr) == 2); + let left = getCallOperandAt(expr, 0); + let right = getCallOperandAt(expr, 1); + if (isConstNonZero(left)) { + this.inheritNonnullIfTrue(right, iff); // !(TRUE != right) -> right must have been true + } else if (isConstNonZero(right)) { + this.inheritNonnullIfTrue(left, iff); // !(left != TRUE) -> left must have been true + } + } else if (name == BuiltinNames.String_not) { + assert(getCallOperandCount(expr) == 1); + this.inheritNonnullIfTrue(getCallOperandAt(expr, 0), iff); // !(!value) -> value must have been true + } else if (name == BuiltinNames.tostack) { + assert(getCallOperandCount(expr) == 1); + this.inheritNonnullIfFalse(getCallOperandAt(expr, 0), iff); + } + break; + } } } diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index a0f520d8d6..17b3f098c9 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -7,6 +7,7 @@ * * @license Apache-2.0 */ +module "binaryen"; export type Index = u32; export type ExpressionId = i32; @@ -643,11 +644,6 @@ export declare function _BinaryenSetAllowInliningFunctionsWithLoops(enabled: boo // Helpers -// Binaryen.js only (ASC_TARGET = 0) -export declare const HEAPU8: Uint8Array; -export declare const HEAPU32: Uint32Array; -export declare const HEAP32: Int32Array; - export declare function _malloc(size: usize): usize; export declare function _free(ptr: usize): void; export declare function __i32_store8(ptr: usize, value: number): void; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index b652e1b54e..eb0e869fb2 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -3,11 +3,8 @@ * @license Apache-2.0 */ -const binaryen = global.binaryen || (global.binaryen = require("binaryen")); - -module.exports = binaryen; - -const { Module } = require("../module"); +import binaryen from "../../lib/binaryen.js"; +import { Module } from "../module.ts"; Module.prototype.toText = function toText(watFormat = true) { if (watFormat) { @@ -21,6 +18,627 @@ Module.prototype.toText = function toText(watFormat = true) { } }; -Module.prototype.toAsmjs = function toAsmjs() { - return binaryen.wrapModule(this.ref).emitAsmjs(); -}; +export const { + _BinaryenTypeCreate, + _BinaryenTypeArity, + _BinaryenTypeExpand, + + _BinaryenModuleCreate, + _BinaryenModuleDispose, + + _BinaryenSizeofLiteral, + _BinaryenLiteralInt32, + _BinaryenLiteralInt64, + _BinaryenLiteralFloat32, + _BinaryenLiteralFloat64, + _BinaryenLiteralVec128, + _BinaryenLiteralFloat32Bits, + _BinaryenLiteralFloat64Bits, + + _BinaryenExpressionGetId, + _BinaryenExpressionGetType, + _BinaryenExpressionSetType, + _BinaryenExpressionPrint, + _BinaryenExpressionCopy, + _BinaryenExpressionFinalize, + + _BinaryenBlock, + _BinaryenBlockGetName, + _BinaryenBlockSetName, + _BinaryenBlockGetNumChildren, + _BinaryenBlockGetChildAt, + _BinaryenBlockSetChildAt, + _BinaryenBlockAppendChild, + _BinaryenBlockInsertChildAt, + _BinaryenBlockRemoveChildAt, + + _BinaryenIf, + _BinaryenIfGetCondition, + _BinaryenIfSetCondition, + _BinaryenIfGetIfTrue, + _BinaryenIfSetIfTrue, + _BinaryenIfGetIfFalse, + _BinaryenIfSetIfFalse, + + _BinaryenLoop, + _BinaryenLoopGetName, + _BinaryenLoopSetName, + _BinaryenLoopGetBody, + _BinaryenLoopSetBody, + + _BinaryenBreak, + _BinaryenBreakGetName, + _BinaryenBreakSetName, + _BinaryenBreakGetCondition, + _BinaryenBreakSetCondition, + _BinaryenBreakGetValue, + _BinaryenBreakSetValue, + + _BinaryenSwitch, + _BinaryenSwitchGetNumNames, + _BinaryenSwitchGetNameAt, + _BinaryenSwitchSetNameAt, + _BinaryenSwitchAppendName, + _BinaryenSwitchInsertNameAt, + _BinaryenSwitchRemoveNameAt, + _BinaryenSwitchGetDefaultName, + _BinaryenSwitchSetDefaultName, + _BinaryenSwitchGetCondition, + _BinaryenSwitchSetCondition, + _BinaryenSwitchGetValue, + _BinaryenSwitchSetValue, + + _BinaryenCall, + _BinaryenCallGetTarget, + _BinaryenCallSetTarget, + _BinaryenCallGetNumOperands, + _BinaryenCallGetOperandAt, + _BinaryenCallSetOperandAt, + _BinaryenCallAppendOperand, + _BinaryenCallInsertOperandAt, + _BinaryenCallRemoveOperandAt, + _BinaryenCallIsReturn, + _BinaryenCallSetReturn, + _BinaryenReturnCall, + + _BinaryenCallIndirect, + _BinaryenCallIndirectGetTable, + _BinaryenCallIndirectSetTable, + _BinaryenCallIndirectGetTarget, + _BinaryenCallIndirectSetTarget, + _BinaryenCallIndirectGetNumOperands, + _BinaryenCallIndirectGetOperandAt, + _BinaryenCallIndirectSetOperandAt, + _BinaryenCallIndirectAppendOperand, + _BinaryenCallIndirectInsertOperandAt, + _BinaryenCallIndirectRemoveOperandAt, + _BinaryenCallIndirectIsReturn, + _BinaryenCallIndirectSetReturn, + _BinaryenReturnCallIndirect, + + _BinaryenLocalGet, + _BinaryenLocalGetGetIndex, + _BinaryenLocalGetSetIndex, + + _BinaryenLocalSet, + _BinaryenLocalSetIsTee, + _BinaryenLocalSetGetIndex, + _BinaryenLocalSetSetIndex, + _BinaryenLocalSetGetValue, + _BinaryenLocalSetSetValue, + _BinaryenLocalTee, + + _BinaryenGlobalGet, + _BinaryenGlobalGetGetName, + _BinaryenGlobalGetSetName, + + _BinaryenGlobalSet, + _BinaryenGlobalSetGetName, + _BinaryenGlobalSetSetName, + _BinaryenGlobalSetGetValue, + _BinaryenGlobalSetSetValue, + + _BinaryenMemorySize, + + _BinaryenMemoryGrow, + _BinaryenMemoryGrowGetDelta, + _BinaryenMemoryGrowSetDelta, + + _BinaryenLoad, + _BinaryenLoadIsAtomic, + _BinaryenLoadSetAtomic, + _BinaryenLoadIsSigned, + _BinaryenLoadSetSigned, + _BinaryenLoadGetOffset, + _BinaryenLoadSetOffset, + _BinaryenLoadGetBytes, + _BinaryenLoadSetBytes, + _BinaryenLoadGetAlign, + _BinaryenLoadSetAlign, + _BinaryenLoadGetPtr, + _BinaryenLoadSetPtr, + _BinaryenAtomicLoad, + + _BinaryenStore, + _BinaryenStoreIsAtomic, + _BinaryenStoreSetAtomic, + _BinaryenStoreGetBytes, + _BinaryenStoreSetBytes, + _BinaryenStoreGetOffset, + _BinaryenStoreSetOffset, + _BinaryenStoreGetAlign, + _BinaryenStoreSetAlign, + _BinaryenStoreGetPtr, + _BinaryenStoreSetPtr, + _BinaryenStoreGetValue, + _BinaryenStoreSetValue, + _BinaryenStoreGetValueType, + _BinaryenStoreSetValueType, + _BinaryenAtomicStore, + + _BinaryenConst, + _BinaryenConstGetValueI32, + _BinaryenConstSetValueI32, + _BinaryenConstGetValueI64Low, + _BinaryenConstSetValueI64Low, + _BinaryenConstGetValueI64High, + _BinaryenConstSetValueI64High, + _BinaryenConstGetValueF32, + _BinaryenConstSetValueF32, + _BinaryenConstGetValueF64, + _BinaryenConstSetValueF64, + _BinaryenConstGetValueV128, + _BinaryenConstSetValueV128, + + _BinaryenUnary, + _BinaryenUnaryGetOp, + _BinaryenUnarySetOp, + _BinaryenUnaryGetValue, + _BinaryenUnarySetValue, + + _BinaryenBinary, + _BinaryenBinaryGetOp, + _BinaryenBinarySetOp, + _BinaryenBinaryGetLeft, + _BinaryenBinarySetLeft, + _BinaryenBinaryGetRight, + _BinaryenBinarySetRight, + + _BinaryenSelect, + _BinaryenSelectGetIfTrue, + _BinaryenSelectSetIfTrue, + _BinaryenSelectGetIfFalse, + _BinaryenSelectSetIfFalse, + _BinaryenSelectGetCondition, + _BinaryenSelectSetCondition, + + _BinaryenDrop, + _BinaryenDropGetValue, + _BinaryenDropSetValue, + + _BinaryenReturn, + _BinaryenReturnGetValue, + _BinaryenReturnSetValue, + + _BinaryenNop, + + _BinaryenUnreachable, + + _BinaryenAtomicRMW, + _BinaryenAtomicRMWGetOp, + _BinaryenAtomicRMWSetOp, + _BinaryenAtomicRMWGetBytes, + _BinaryenAtomicRMWSetBytes, + _BinaryenAtomicRMWGetOffset, + _BinaryenAtomicRMWSetOffset, + _BinaryenAtomicRMWGetPtr, + _BinaryenAtomicRMWSetPtr, + _BinaryenAtomicRMWGetValue, + _BinaryenAtomicRMWSetValue, + + _BinaryenAtomicCmpxchg, + _BinaryenAtomicCmpxchgGetBytes, + _BinaryenAtomicCmpxchgSetBytes, + _BinaryenAtomicCmpxchgGetOffset, + _BinaryenAtomicCmpxchgSetOffset, + _BinaryenAtomicCmpxchgGetPtr, + _BinaryenAtomicCmpxchgSetPtr, + _BinaryenAtomicCmpxchgGetExpected, + _BinaryenAtomicCmpxchgSetExpected, + _BinaryenAtomicCmpxchgGetReplacement, + _BinaryenAtomicCmpxchgSetReplacement, + + _BinaryenAtomicWait, + _BinaryenAtomicWaitGetPtr, + _BinaryenAtomicWaitSetPtr, + _BinaryenAtomicWaitGetExpected, + _BinaryenAtomicWaitSetExpected, + _BinaryenAtomicWaitGetTimeout, + _BinaryenAtomicWaitSetTimeout, + _BinaryenAtomicWaitGetExpectedType, + _BinaryenAtomicWaitSetExpectedType, + + _BinaryenAtomicNotify, + _BinaryenAtomicNotifyGetPtr, + _BinaryenAtomicNotifySetPtr, + _BinaryenAtomicNotifyGetNotifyCount, + _BinaryenAtomicNotifySetNotifyCount, + + _BinaryenAtomicFence, + _BinaryenAtomicFenceGetOrder, + _BinaryenAtomicFenceSetOrder, + + _BinaryenSIMDExtract, + _BinaryenSIMDExtractGetOp, + _BinaryenSIMDExtractSetOp, + _BinaryenSIMDExtractGetVec, + _BinaryenSIMDExtractSetVec, + _BinaryenSIMDExtractGetIndex, + _BinaryenSIMDExtractSetIndex, + + _BinaryenSIMDReplace, + _BinaryenSIMDReplaceGetOp, + _BinaryenSIMDReplaceSetOp, + _BinaryenSIMDReplaceGetVec, + _BinaryenSIMDReplaceSetVec, + _BinaryenSIMDReplaceGetIndex, + _BinaryenSIMDReplaceSetIndex, + _BinaryenSIMDReplaceGetValue, + _BinaryenSIMDReplaceSetValue, + + _BinaryenSIMDShuffle, + _BinaryenSIMDShuffleGetLeft, + _BinaryenSIMDShuffleSetLeft, + _BinaryenSIMDShuffleGetRight, + _BinaryenSIMDShuffleSetRight, + _BinaryenSIMDShuffleGetMask, + _BinaryenSIMDShuffleSetMask, + + _BinaryenSIMDTernary, + _BinaryenSIMDTernaryGetOp, + _BinaryenSIMDTernarySetOp, + _BinaryenSIMDTernaryGetA, + _BinaryenSIMDTernarySetA, + _BinaryenSIMDTernaryGetB, + _BinaryenSIMDTernarySetB, + _BinaryenSIMDTernaryGetC, + _BinaryenSIMDTernarySetC, + + _BinaryenSIMDShift, + _BinaryenSIMDShiftGetOp, + _BinaryenSIMDShiftSetOp, + _BinaryenSIMDShiftGetVec, + _BinaryenSIMDShiftSetVec, + _BinaryenSIMDShiftGetShift, + _BinaryenSIMDShiftSetShift, + + _BinaryenSIMDLoad, + _BinaryenSIMDLoadGetOp, + _BinaryenSIMDLoadSetOp, + _BinaryenSIMDLoadGetOffset, + _BinaryenSIMDLoadSetOffset, + _BinaryenSIMDLoadGetAlign, + _BinaryenSIMDLoadSetAlign, + _BinaryenSIMDLoadGetPtr, + _BinaryenSIMDLoadSetPtr, + + _BinaryenSIMDLoadStoreLane, + _BinaryenSIMDLoadStoreLaneGetOp, + _BinaryenSIMDLoadStoreLaneSetOp, + _BinaryenSIMDLoadStoreLaneGetOffset, + _BinaryenSIMDLoadStoreLaneSetOffset, + _BinaryenSIMDLoadStoreLaneGetAlign, + _BinaryenSIMDLoadStoreLaneSetAlign, + _BinaryenSIMDLoadStoreLaneGetIndex, + _BinaryenSIMDLoadStoreLaneSetIndex, + _BinaryenSIMDLoadStoreLaneGetPtr, + _BinaryenSIMDLoadStoreLaneSetPtr, + _BinaryenSIMDLoadStoreLaneGetVec, + _BinaryenSIMDLoadStoreLaneSetVec, + _BinaryenSIMDLoadStoreLaneIsStore, + + _BinaryenMemoryInit, + _BinaryenMemoryInitGetSegment, + _BinaryenMemoryInitSetSegment, + _BinaryenMemoryInitGetDest, + _BinaryenMemoryInitSetDest, + _BinaryenMemoryInitGetOffset, + _BinaryenMemoryInitSetOffset, + _BinaryenMemoryInitGetSize, + _BinaryenMemoryInitSetSize, + + _BinaryenDataDrop, + _BinaryenDataDropGetSegment, + _BinaryenDataDropSetSegment, + + _BinaryenMemoryCopy, + _BinaryenMemoryCopyGetDest, + _BinaryenMemoryCopySetDest, + _BinaryenMemoryCopyGetSource, + _BinaryenMemoryCopySetSource, + _BinaryenMemoryCopyGetSize, + _BinaryenMemoryCopySetSize, + + _BinaryenMemoryFill, + _BinaryenMemoryFillGetDest, + _BinaryenMemoryFillSetDest, + _BinaryenMemoryFillGetValue, + _BinaryenMemoryFillSetValue, + _BinaryenMemoryFillGetSize, + _BinaryenMemoryFillSetSize, + + _BinaryenRefNull, + + _BinaryenRefIs, + _BinaryenRefIsGetOp, + _BinaryenRefIsSetOp, + _BinaryenRefIsGetValue, + _BinaryenRefIsSetValue, + + _BinaryenRefAs, + _BinaryenRefAsGetOp, + _BinaryenRefAsSetOp, + _BinaryenRefAsGetValue, + _BinaryenRefAsSetValue, + + _BinaryenRefFunc, + _BinaryenRefFuncGetFunc, + _BinaryenRefFuncSetFunc, + + _BinaryenRefEq, + _BinaryenRefEqGetLeft, + _BinaryenRefEqSetLeft, + _BinaryenRefEqGetRight, + _BinaryenRefEqSetRight, + + _BinaryenTableGet, + _BinaryenTableGetGetTable, + _BinaryenTableGetSetTable, + _BinaryenTableGetGetIndex, + _BinaryenTableGetSetIndex, + + _BinaryenTableSet, + _BinaryenTableSetGetTable, + _BinaryenTableSetSetTable, + _BinaryenTableSetGetIndex, + _BinaryenTableSetSetIndex, + _BinaryenTableSetGetValue, + _BinaryenTableSetSetValue, + + _BinaryenTableSize, + _BinaryenTableSizeGetTable, + _BinaryenTableSizeSetTable, + + _BinaryenTableGrow, + _BinaryenTableGrowGetTable, + _BinaryenTableGrowSetTable, + _BinaryenTableGrowGetValue, + _BinaryenTableGrowSetValue, + _BinaryenTableGrowGetDelta, + _BinaryenTableGrowSetDelta, + + _BinaryenTry, + _BinaryenTryGetName, + _BinaryenTrySetName, + _BinaryenTryGetBody, + _BinaryenTrySetBody, + _BinaryenTryGetNumCatchTags, + _BinaryenTryGetNumCatchBodies, + _BinaryenTryGetCatchTagAt, + _BinaryenTrySetCatchTagAt, + _BinaryenTryAppendCatchTag, + _BinaryenTryInsertCatchTagAt, + _BinaryenTryRemoveCatchTagAt, + _BinaryenTryGetCatchBodyAt, + _BinaryenTrySetCatchBodyAt, + _BinaryenTryAppendCatchBody, + _BinaryenTryInsertCatchBodyAt, + _BinaryenTryRemoveCatchBodyAt, + _BinaryenTryHasCatchAll, + _BinaryenTryGetDelegateTarget, + _BinaryenTrySetDelegateTarget, + _BinaryenTryIsDelegate, + + _BinaryenThrow, + _BinaryenThrowGetTag, + _BinaryenThrowSetTag, + _BinaryenThrowGetNumOperands, + _BinaryenThrowGetOperandAt, + _BinaryenThrowSetOperandAt, + _BinaryenThrowAppendOperand, + _BinaryenThrowInsertOperandAt, + _BinaryenThrowRemoveOperandAt, + + _BinaryenRethrow, + _BinaryenRethrowGetTarget, + _BinaryenRethrowSetDepth, + + _BinaryenTupleMake, + _BinaryenTupleMakeGetNumOperands, + _BinaryenTupleMakeGetOperandAt, + _BinaryenTupleMakeSetOperandAt, + _BinaryenTupleMakeAppendOperand, + _BinaryenTupleMakeInsertOperandAt, + _BinaryenTupleMakeRemoveOperandAt, + + _BinaryenTupleExtract, + _BinaryenTupleExtractGetTuple, + _BinaryenTupleExtractSetTuple, + _BinaryenTupleExtractGetIndex, + _BinaryenTupleExtractSetIndex, + + _BinaryenPop, + + _BinaryenI31New, + _BinaryenI31NewGetValue, + _BinaryenI31NewSetValue, + + _BinaryenI31Get, + _BinaryenI31GetGetI31, + _BinaryenI31GetSetI31, + _BinaryenI31GetIsSigned, + _BinaryenI31GetSetSigned, + + _BinaryenAddFunction, + _BinaryenGetFunction, + _BinaryenRemoveFunction, + _BinaryenGetNumFunctions, + _BinaryenGetFunctionByIndex, + + _BinaryenFunctionGetName, + _BinaryenFunctionGetParams, + _BinaryenFunctionGetResults, + _BinaryenFunctionGetNumVars, + _BinaryenFunctionGetVar, + _BinaryenFunctionGetNumLocals, + _BinaryenFunctionHasLocalName, + _BinaryenFunctionGetLocalName, + _BinaryenFunctionSetLocalName, + _BinaryenFunctionGetBody, + _BinaryenFunctionSetBody, + _BinaryenFunctionOptimize, + _BinaryenFunctionRunPasses, + _BinaryenFunctionSetDebugLocation, + + _BinaryenAddFunctionImport, + _BinaryenAddTableImport, + _BinaryenAddMemoryImport, + _BinaryenAddGlobalImport, + _BinaryenAddTagImport, + + _BinaryenAddFunctionExport, + _BinaryenAddTableExport, + _BinaryenAddMemoryExport, + _BinaryenAddGlobalExport, + _BinaryenAddTagExport, + _BinaryenGetExport, + _BinaryenRemoveExport, + _BinaryenGetNumExports, + _BinaryenGetExportByIndex, + _BinaryenExportGetKind, + _BinaryenExportGetName, + _BinaryenExportGetValue, + + _BinaryenAddGlobal, + _BinaryenGetGlobal, + _BinaryenRemoveGlobal, + _BinaryenGetNumGlobals, + _BinaryenGetGlobalByIndex, + + _BinaryenGlobalGetName, + _BinaryenGlobalGetType, + _BinaryenGlobalIsMutable, + _BinaryenGlobalGetInitExpr, + + _BinaryenAddTag, + _BinaryenGetTag, + _BinaryenRemoveTag, + + _BinaryenTagGetName, + _BinaryenTagGetParams, + _BinaryenTagGetResults, + + _BinaryenAddTable, + _BinaryenRemoveTable, + _BinaryenGetNumTables, + _BinaryenGetTable, + _BinaryenGetTableByIndex, + + _BinaryenTableGetName, + _BinaryenTableSetName, + _BinaryenTableGetInitial, + _BinaryenTableSetInitial, + _BinaryenTableHasMax, + _BinaryenTableGetMax, + _BinaryenTableSetMax, + + _BinaryenAddActiveElementSegment, + _BinaryenAddPassiveElementSegment, + _BinaryenRemoveElementSegment, + _BinaryenGetNumElementSegments, + _BinaryenGetElementSegment, + _BinaryenGetElementSegmentByIndex, + + _BinaryenSetMemory, + _BinaryenGetNumMemorySegments, + _BinaryenGetMemorySegmentByteOffset, + _BinaryenGetMemorySegmentByteLength, + _BinaryenCopyMemorySegmentData, + + _BinaryenSetStart, + + _BinaryenModuleParse, + _BinaryenModulePrint, + _BinaryenModulePrintAsmjs, + _BinaryenModuleValidate, + _BinaryenModuleOptimize, + _BinaryenModuleRunPasses, + _BinaryenModuleAutoDrop, + _BinaryenModuleAllocateAndWrite, + _BinaryenModuleRead, + _BinaryenModuleInterpret, + _BinaryenModuleAddDebugInfoFileName, + _BinaryenModuleGetDebugInfoFileName, + _BinaryenModuleGetFeatures, + _BinaryenModuleSetFeatures, + + _BinaryenAddCustomSection, + + _BinaryenExpressionGetSideEffects, + + _RelooperCreate, + _RelooperAddBlock, + _RelooperAddBranch, + _RelooperAddBlockWithSwitch, + _RelooperAddBranchForSwitch, + _RelooperRenderAndDispose, + + _ExpressionRunnerCreate, + _ExpressionRunnerSetLocalValue, + _ExpressionRunnerSetGlobalValue, + _ExpressionRunnerRunAndDispose, + + _BinaryenGetOptimizeLevel, + _BinaryenSetOptimizeLevel, + _BinaryenGetShrinkLevel, + _BinaryenSetShrinkLevel, + _BinaryenGetDebugInfo, + _BinaryenSetDebugInfo, + _BinaryenGetLowMemoryUnused, + _BinaryenSetLowMemoryUnused, + _BinaryenGetZeroFilledMemory, + _BinaryenSetZeroFilledMemory, + _BinaryenGetFastMath, + _BinaryenSetFastMath, + _BinaryenGetPassArgument, + _BinaryenSetPassArgument, + _BinaryenClearPassArguments, + _BinaryenGetAlwaysInlineMaxSize, + _BinaryenSetAlwaysInlineMaxSize, + _BinaryenGetFlexibleInlineMaxSize, + _BinaryenSetFlexibleInlineMaxSize, + _BinaryenGetOneCallerInlineMaxSize, + _BinaryenSetOneCallerInlineMaxSize, + _BinaryenGetAllowInliningFunctionsWithLoops, + _BinaryenSetAllowInliningFunctionsWithLoops, + + // Helpers + + _malloc, + _free, + __i32_store8, + __i32_store16, + __i32_store, + __f32_store, + __f64_store, + __i32_load8_s, + __i32_load8_u, + __i32_load16_s, + __i32_load16_u, + __i32_load, + __f32_load, + __f64_load + +} = binaryen; + +export default binaryen; diff --git a/src/glue/js/collections.js b/src/glue/js/collections.js index 63a3b9499d..62c0a0c509 100644 --- a/src/glue/js/collections.js +++ b/src/glue/js/collections.js @@ -3,14 +3,14 @@ * @license Apache-2.0 */ -global.Map_keys = function Map_keys(map) { +globalThis.Map_keys = function Map_keys(map) { return Array.from(map.keys()); }; -global.Map_values = function Map_values(map) { +globalThis.Map_values = function Map_values(map) { return Array.from(map.values()); }; -global.Set_values = function Set_values(set) { +globalThis.Set_values = function Set_values(set) { return Array.from(set.values()); }; diff --git a/src/glue/js/float.js b/src/glue/js/float.js index a028022d30..090af6cf96 100644 --- a/src/glue/js/float.js +++ b/src/glue/js/float.js @@ -9,22 +9,22 @@ const F64 = new Float64Array(1); const F32 = new Float32Array(F64.buffer); const I32 = new Int32Array(F64.buffer); -global.f32_as_i32 = function f32_as_i32(value) { +globalThis.f32_as_i32 = function f32_as_i32(value) { F32[0] = value; return I32[0]; }; -global.i32_as_f32 = function i32_as_f32(value) { +globalThis.i32_as_f32 = function i32_as_f32(value) { I32[0] = value; return F32[0]; }; -global.f64_as_i64 = function f64_as_i64(value) { +globalThis.f64_as_i64 = function f64_as_i64(value) { F64[0] = value; return i64_new(I32[0], I32[1]); }; -global.i64_as_f64 = function i64_as_f64(value) { +globalThis.i64_as_f64 = function i64_as_f64(value) { I32[0] = i64_low(value); I32[1] = i64_high(value); return F64[0]; diff --git a/src/glue/js/i64.js b/src/glue/js/i64.js index da7835984f..78a2fc06e4 100644 --- a/src/glue/js/i64.js +++ b/src/glue/js/i64.js @@ -5,58 +5,58 @@ /* eslint-disable no-undef */ -const Long = global.Long || require("long"); +import Long from "long"; -global.i64_zero = Long.ZERO; -global.i64_one = Long.ONE; -global.i64_neg_one = Long.fromInt(-1); +globalThis.i64_zero = Long.ZERO; +globalThis.i64_one = Long.ONE; +globalThis.i64_neg_one = Long.fromInt(-1); -global.i64_is = function i64_is(value) { +globalThis.i64_is = function i64_is(value) { return Long.isLong(value); }; -global.i64_new = function i64_new(lo, hi) { +globalThis.i64_new = function i64_new(lo, hi) { return Long.fromBits(lo, hi); }; -global.i64_low = function i64_low(value) { +globalThis.i64_low = function i64_low(value) { return value.low; }; -global.i64_high = function i64_high(value) { +globalThis.i64_high = function i64_high(value) { return value.high; }; -global.i64_not = function i64_not(value) { +globalThis.i64_not = function i64_not(value) { return value.not(); }; -global.i64_clz = function i64_clz(value) { +globalThis.i64_clz = function i64_clz(value) { return value.clz(); }; -global.i64_ctz = function i64_ctz(value) { +globalThis.i64_ctz = function i64_ctz(value) { return value.ctz(); }; -global.i64_add = function i64_add(left, right) { +globalThis.i64_add = function i64_add(left, right) { return left.add(right); }; -global.i64_sub = function i64_sub(left, right) { +globalThis.i64_sub = function i64_sub(left, right) { return left.sub(right); }; -global.i64_mul = function i64_mul(left, right) { +globalThis.i64_mul = function i64_mul(left, right) { return left.mul(right); }; -global.i64_pow = function i64_pow(left, right) { +globalThis.i64_pow = function i64_pow(left, right) { var rightLo = right.low; var rightHi = right.high; if (rightHi <= 0) { if (rightHi < 0) { - if (left.eq(global.i64_neg_one)) { + if (left.eq(globalThis.i64_neg_one)) { return rightLo & 1 ? left : Long.ONE; } return left.eq(Long.ONE) ? left : Long.ZERO; @@ -76,117 +76,117 @@ global.i64_pow = function i64_pow(left, right) { return result; }; -global.i64_div = function i64_div(left, right) { +globalThis.i64_div = function i64_div(left, right) { return left.div(right); }; -global.i64_div_u = function i64_div_u(left, right) { +globalThis.i64_div_u = function i64_div_u(left, right) { return left.toUnsigned().div(right.toUnsigned()).toSigned(); }; -global.i64_rem = function i64_rem(left, right) { +globalThis.i64_rem = function i64_rem(left, right) { return left.mod(right); }; -global.i64_rem_u = function i64_rem_u(left, right) { +globalThis.i64_rem_u = function i64_rem_u(left, right) { return left.toUnsigned().mod(right.toUnsigned()).toSigned(); }; -global.i64_and = function i64_and(left, right) { +globalThis.i64_and = function i64_and(left, right) { return left.and(right); }; -global.i64_or = function i64_or(left, right) { +globalThis.i64_or = function i64_or(left, right) { return left.or(right); }; -global.i64_xor = function i64_xor(left, right) { +globalThis.i64_xor = function i64_xor(left, right) { return left.xor(right); }; -global.i64_shl = function i64_shl(left, right) { +globalThis.i64_shl = function i64_shl(left, right) { return left.shl(right); }; -global.i64_shr = function i64_shr(left, right) { +globalThis.i64_shr = function i64_shr(left, right) { return left.shr(right); }; -global.i64_shr_u = function i64_shr_u(left, right) { +globalThis.i64_shr_u = function i64_shr_u(left, right) { return left.shru(right); }; -global.i64_eq = function i64_eq(left, right) { +globalThis.i64_eq = function i64_eq(left, right) { return left.eq(right); }; -global.i64_ne = function i64_ne(left, right) { +globalThis.i64_ne = function i64_ne(left, right) { return left.ne(right); }; -global.i64_gt = function i64_gt(left, right) { +globalThis.i64_gt = function i64_gt(left, right) { return left.gt(right); }; -global.i64_align = function i64_align(value, alignment) { +globalThis.i64_align = function i64_align(value, alignment) { assert(alignment && (alignment & (alignment - 1)) == 0); var mask = Long.fromInt(alignment - 1); return value.add(mask).and(mask.not()); }; -global.i64_is_i8 = function i64_is_i8(value) { +globalThis.i64_is_i8 = function i64_is_i8(value) { return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); }; -global.i64_is_i16 = function i64_is_i16(value) { +globalThis.i64_is_i16 = function i64_is_i16(value) { return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); }; -global.i64_is_i32 = function i64_is_i32(value) { +globalThis.i64_is_i32 = function i64_is_i32(value) { return (value.high === 0 && value.low >= 0) || (value.high === -1 && value.low < 0); }; -global.i64_is_u8 = function i64_is_u8(value) { +globalThis.i64_is_u8 = function i64_is_u8(value) { return value.high === 0 && (value.low >>> 0) <= u8.MAX_VALUE; }; -global.i64_is_u16 = function i64_is_u16(value) { +globalThis.i64_is_u16 = function i64_is_u16(value) { return value.high === 0 && (value.low >>> 0) <= u16.MAX_VALUE; }; -global.i64_is_u32 = function i64_is_u32(value) { +globalThis.i64_is_u32 = function i64_is_u32(value) { return value.high === 0; }; -global.i64_is_bool = function i64_is_bool(value) { +globalThis.i64_is_bool = function i64_is_bool(value) { return (value.high | (value.low & ~1)) === 0; }; const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); -global.i64_is_f32 = function i64_is_f32(value) { +globalThis.i64_is_f32 = function i64_is_f32(value) { return value.gte(minSafeF32) && value.lte(maxSafeF32); }; const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); -global.i64_is_f64 = function i64_is_f64(value) { +globalThis.i64_is_f64 = function i64_is_f64(value) { return value.gte(minSafeF64) && value.lte(maxSafeF64); }; -global.i64_to_f32 = function i64_to_f32(value) { - return global.Math.fround(value.toNumber()); +globalThis.i64_to_f32 = function i64_to_f32(value) { + return globalThis.Math.fround(value.toNumber()); }; -global.i64_to_f64 = function i64_to_f64(value) { +globalThis.i64_to_f64 = function i64_to_f64(value) { return value.toNumber(); }; -global.i64_to_string = function i64_to_string(value, unsigned) { +globalThis.i64_to_string = function i64_to_string(value, unsigned) { return unsigned ? value.toUnsigned().toString() : value.toString(); }; diff --git a/src/index-js.ts b/src/index-js.ts new file mode 100644 index 0000000000..52fadc6dfb --- /dev/null +++ b/src/index-js.ts @@ -0,0 +1,19 @@ +import "./glue/js/index"; +export * from "./index-wasm"; + +// Full API +export * from "./ast"; +export * from "./common"; +export * from "./compiler"; +export * from "./bindings"; +export * from "./diagnostics"; +export * from "./flow"; +export * from "./module"; +export * from "./parser"; +export * from "./program"; +export * from "./resolver"; +export * from "./tokenizer"; +export * from "./types"; +export * from "./extra/ast"; +import * as util from "./util"; +export { util }; diff --git a/src/index-wasm.ts b/src/index-wasm.ts new file mode 100644 index 0000000000..f005d242a5 --- /dev/null +++ b/src/index-wasm.ts @@ -0,0 +1,357 @@ +/** + * @fileoverview The C-like and re-exported public compiler interface. + * + * The intended way to consume the compiler sources is to import this + * file, which again exports all relevant functions, classes and constants + * as a flat namespace. + * + * Note though that the compiler sources are written in "portable + * AssemblyScript" that can be compiled to both JavaScript with tsc and + * to WebAssembly with asc, and as such require additional glue code + * depending on the target. + * + * When compiling to JavaScript `glue/js/index.js` must be included. + * When compiling to WebAssembly `glue/wasm/index.ts` must be included. + */ + +import { Target, Runtime, Feature } from "./common"; +import { Compiler, Options } from "./compiler"; +import { TSDBuilder, JSBuilder } from "./bindings"; +import { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from "./diagnostics"; +import { Module } from "./module"; +import { Program } from "./program"; +import { Range } from "./tokenizer"; +import { Source } from "./ast"; + +// Options + +/** Creates a new set of compiler options. */ +export function newOptions(): Options { + return new Options(); +} + +/** Sets the `target` option. */ +export function setTarget(options: Options, target: Target): void { + options.target = target; +} + +export function setRuntime(options: Options, runtime: Runtime): void { + options.runtime = runtime; +} + +/** Sets the `noAssert` option. */ +export function setNoAssert(options: Options, noAssert: bool): void { + options.noAssert = noAssert; +} + +/** Sets the `exportMemory` option. */ +export function setExportMemory(options: Options, exportMemory: bool): void { + options.exportMemory = exportMemory; +} + +/** Sets the `importMemory` option. */ +export function setImportMemory(options: Options, importMemory: bool): void { + options.importMemory = importMemory; +} + +/** Sets the `initialMemory` option. */ +export function setInitialMemory(options: Options, initialMemory: u32): void { + options.initialMemory = initialMemory; +} + +/** Sets the `maximumMemory` option. */ +export function setMaximumMemory(options: Options, maximumMemory: u32): void { + options.maximumMemory = maximumMemory; +} + +/** Sets the `sharedMemory` option. */ +export function setSharedMemory(options: Options, sharedMemory: bool): void { + options.sharedMemory = sharedMemory; +} + +/** Sets the `importTable` option. */ +export function setImportTable(options: Options, importTable: bool): void { + options.importTable = importTable; +} + +/** Sets the `exportTable` option. */ +export function setExportTable(options: Options, exportTable: bool): void { + options.exportTable = exportTable; +} + +/** Sets the `sourceMap` option. */ +export function setSourceMap(options: Options, sourceMap: bool): void { + options.sourceMap = sourceMap; +} + +/** Sets the `memoryBase` option. */ +export function setMemoryBase(options: Options, memoryBase: u32): void { + options.memoryBase = memoryBase; +} + +/** Sets the `tableBase` option. */ +export function setTableBase(options: Options, tableBase: u32): void { + options.tableBase = tableBase; +} + +/** Adds a 'globalAliases' value. */ +export function addGlobalAlias(options: Options, alias: string, name: string): void { + var globalAliases = options.globalAliases; + if (!globalAliases) options.globalAliases = globalAliases = new Map(); + globalAliases.set(alias, name); +} + +/** Removes a 'globalAliases' value. */ +export function removeGlobalAlias(options: Options, alias: string): void { + var globalAliases = options.globalAliases; + if (globalAliases) globalAliases.delete(alias); +} + +/** Sets the `exportStart` option. */ +export function setExportStart(options: Options, exportStart: string | null): void { + options.exportStart = exportStart; +} + +/** Sets the `noUnsafe` option. */ +export function setNoUnsafe(options: Options, noUnsafe: bool): void { + options.noUnsafe = noUnsafe; +} + +/** Sets the `lowMemoryLimit` option. */ +export function setLowMemoryLimit(options: Options, lowMemoryLimit: i32): void { + options.lowMemoryLimit = lowMemoryLimit; +} + +/** Sets the `exportRuntime` option. */ +export function setExportRuntime(options: Options, exportRuntime: bool): void { + options.exportRuntime = exportRuntime; +} + +/** Default stack size. */ +export const DEFAULT_STACK_SIZE = 16384; + +/** Sets the `stackSize` option. */ +export function setStackSize(options: Options, stackSize: i32): void { + options.stackSize = stackSize; +} + +/** Sets the bundle semantic version. */ +export function setBundleVersion( + options: Options, + bundleMajorVersion: i32, + bundleMinorVersion: i32, + bundlePatchVersion: i32, +): void { + options.bundleMajorVersion = bundleMajorVersion; + options.bundleMinorVersion = bundleMinorVersion; + options.bundlePatchVersion = bundlePatchVersion; +} + +/** Sign extension operations. */ +export const FEATURE_SIGN_EXTENSION = Feature.SIGN_EXTENSION; +/** Mutable global imports and exports. */ +export const FEATURE_MUTABLE_GLOBALS = Feature.MUTABLE_GLOBALS; +/** Non-trapping float to int conversion operations. */ +export const FEATURE_NONTRAPPING_F2I = Feature.NONTRAPPING_F2I; +/** Bulk memory operations. */ +export const FEATURE_BULK_MEMORY = Feature.BULK_MEMORY; +/** SIMD types and operations. */ +export const FEATURE_SIMD = Feature.SIMD; +/** Threading and atomic operations. */ +export const FEATURE_THREADS = Feature.THREADS; +/** Exception handling operations. */ +export const FEATURE_EXCEPTION_HANDLING = Feature.EXCEPTION_HANDLING; +/** Tail call operations. */ +export const FEATURE_TAIL_CALLS = Feature.TAIL_CALLS; +/** Reference types. */ +export const FEATURE_REFERENCE_TYPES = Feature.REFERENCE_TYPES; +/** Multi value types. */ +export const FEATURE_MULTI_VALUE = Feature.MULTI_VALUE; +/** Garbage collection. */ +export const FEATURE_GC = Feature.GC; +/** Memory64. */ +export const FEATURE_MEMORY64 = Feature.MEMORY64; +/** Function references. */ +export const FEATURE_FUNCTION_REFERENCES = Feature.FUNCTION_REFERENCES; +/** Relaxed SIMD. */ +export const FEATURE_RELAXED_SIMD = Feature.RELAXED_SIMD; +/** Extended const expressions. */ +export const FEATURE_EXTENDED_CONST = Feature.EXTENDED_CONST; + +/** Enables a specific feature. */ +export function enableFeature(options: Options, feature: Feature): void { + options.features |= feature; +} + +/** Disables a specific feature. */ +export function disableFeature(options: Options, feature: Feature): void { + options.features &= ~feature; +} + +/** Gives the compiler a hint at the optimize levels that will be used later on. */ +export function setOptimizeLevelHints(options: Options, optimizeLevel: i32, shrinkLevel: i32): void { + options.optimizeLevelHint = optimizeLevel; + options.shrinkLevelHint = shrinkLevel; +} + +/** Gives the compiler a hint of the emitted module's basename. */ +export function setBasenameHint(options: Options, basename: string): void { + options.basenameHint = basename; +} + +/** Sets the `pedantic` option. */ +export function setPedantic(options: Options, pedantic: bool): void { + options.pedantic = pedantic; +} + +// Program + +/** Creates a new Program. */ +export function newProgram(options: Options): Program { + return new Program(options); +} + +/** Obtains the next diagnostic message. Returns `null` once complete. */ +export function nextDiagnostic(program: Program): DiagnosticMessage | null { + return program.diagnosticsOffset < program.diagnostics.length + ? program.diagnostics[program.diagnosticsOffset++] + : null; +} + +/** Obtains the source of the given file. */ +export function getSource(program: Program, internalPath: string): string | null { + return program.getSource(internalPath); +} + +/** Formats a diagnostic message to a string. */ +export { formatDiagnosticMessage as formatDiagnostic }; + +/** Gets the code of a diagnostic message. */ +export function getDiagnosticCode(diagnostic: DiagnosticMessage): i32 { + return diagnostic.code; +} + +/** Gets the category of a diagnostic message. */ +export function getDiagnosticCategory(diagnostic: DiagnosticMessage): DiagnosticCategory { + return diagnostic.category; +} + +/** Gets the textual message of a diagnostic message. */ +export function getDiagnosticMessage(diagnostic: DiagnosticMessage): string { + return diagnostic.message; +} + +/** Gets the primary range, if any, of a diagnostic message. */ +export function getDiagnosticRange(diagnostic: DiagnosticMessage): Range | null { + return diagnostic.range; +} + +/** Gets the related range, if any, of a diagnostic message. */ +export function getDiagnosticRelatedRange(diagnostic: DiagnosticMessage): Range | null { + return diagnostic.relatedRange; +} + +/** Gets a range's start offset. */ +export function getRangeStart(range: Range): i32 { + return range.start; +} + +/** Gets a range's end offsset. */ +export function getRangeEnd(range: Range): i32 { + return range.end; +} + +/** Gets a range's relevant source. */ +export function getRangeSource(range: Range): Source { + return range.source; +} + +/** Gets a source's normalized path. */ +export function getSourceNormalizedPath(source: Source): string { + return source.normalizedPath; +} + +/** Tests whether a diagnostic is informatory. */ +export function isInfo(message: DiagnosticMessage): bool { + return message.category == DiagnosticCategory.INFO; +} + +/** Tests whether a diagnostic is a warning. */ +export function isWarning(message: DiagnosticMessage): bool { + return message.category == DiagnosticCategory.WARNING; +} + +/** Tests whether a diagnostic is an error. */ +export function isError(message: DiagnosticMessage): bool { + return message.category == DiagnosticCategory.ERROR; +} + +// Parser + +/** Parses a source file. If `parser` has been omitted a new one is created. */ +export function parse( + /** Program reference. */ + program: Program, + /** Source text of the file, or `null` to indicate not found. */ + text: string | null, + /** Normalized path of the file. */ + path: string, + /** Whether this is an entry file. */ + isEntry: bool = false +): void { + program.parser.parseFile(text, path, isEntry); +} + +/** Obtains the next required file's path. Returns `null` once complete. */ +export function nextFile(program: Program): string | null { + return program.parser.nextFile(); +} + +/** Obtains the path of the dependee of a given imported file. */ +export function getDependee(program: Program, file: string): string | null { + return program.parser.getDependee(file); +} + +// Compiler + +/** Initializes the program pre-emptively for transform hooks. */ +export function initializeProgram(program: Program): void { + program.initialize(); +} + +/** Compiles the parsed sources to a module. */ +export function compile(program: Program): Module { + program.parser.finish(); + return new Compiler(program).compile(); +} + +/** Builds TypeScript definitions for the specified program. */ +export function buildTSD(program: Program, esm: bool): string { + return TSDBuilder.build(program, esm); +} + +/** Builds JavaScript glue code for the specified program. */ +export function buildJS(program: Program, esm: bool): string { + return JSBuilder.build(program, esm); +} + +/** Gets the Binaryen module reference of a module. */ +export function getBinaryenModuleRef(module: Module): usize { + return module.ref; +} + +/** Validates a module. */ +export function validate(module: Module): bool { + return module.validate(); +} + +/** Optimizes a module. */ +export function optimize( + module: Module, + optimizeLevel: i32, + shrinkLevel: i32, + debugInfo: bool = false, + zeroFilledMemory: bool = false +): void { + module.optimize(optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); +} diff --git a/src/index.ts b/src/index.ts index 560ca8fd5c..781ed0d1a7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,293 +16,6 @@ * * SPDX-License-Identifier: Apache-2.0 */ - -/** - * @fileoverview The C-like and re-exported public compiler interface. - * - * The intended way to consume the compiler sources is to import this - * file, which again exports all relevant functions, classes and constants - * as a flat namespace. - * - * Note though that the compiler sources are written in "portable - * AssemblyScript" that can be compiled to both JavaScript with tsc and - * to WebAssembly with asc, and as such require additional glue code - * depending on the target. - * - * When compiling to JavaScript `glue/js/index.js` must be included. - * When compiling to WebAssembly `glue/wasm/index.ts` must be included. - */ - -import { Target, Runtime, Feature } from "./common"; -import { Compiler, Options } from "./compiler"; -import { IDLBuilder, TSDBuilder } from "./definitions"; -import { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from "./diagnostics"; -import { Module } from "./module"; -import { Program } from "./program"; - -// Options - -/** Creates a new set of compiler options. */ -export function newOptions(): Options { - return new Options(); -} - -/** Sets the `target` option. */ -export function setTarget(options: Options, target: Target): void { - options.target = target; -} - -export function setRuntime(options: Options, runtime: Runtime): void { - options.runtime = runtime; -} - -/** Sets the `noAssert` option. */ -export function setNoAssert(options: Options, noAssert: bool): void { - options.noAssert = noAssert; -} - -/** Sets the `exportMemory` option. */ -export function setExportMemory(options: Options, exportMemory: bool): void { - options.exportMemory = exportMemory; -} - -/** Sets the `importMemory` option. */ -export function setImportMemory(options: Options, importMemory: bool): void { - options.importMemory = importMemory; -} - -/** Sets the `initialMemory` option. */ -export function setInitialMemory(options: Options, initialMemory: u32): void { - options.initialMemory = initialMemory; -} - -/** Sets the `maximumMemory` option. */ -export function setMaximumMemory(options: Options, maximumMemory: u32): void { - options.maximumMemory = maximumMemory; -} - -/** Sets the `sharedMemory` option. */ -export function setSharedMemory(options: Options, sharedMemory: bool): void { - options.sharedMemory = sharedMemory; -} - -/** Sets the `importTable` option. */ -export function setImportTable(options: Options, importTable: bool): void { - options.importTable = importTable; -} - -/** Sets the `exportTable` option. */ -export function setExportTable(options: Options, exportTable: bool): void { - options.exportTable = exportTable; -} - -/** Sets the `sourceMap` option. */ -export function setSourceMap(options: Options, sourceMap: bool): void { - options.sourceMap = sourceMap; -} - -/** Sets the `memoryBase` option. */ -export function setMemoryBase(options: Options, memoryBase: u32): void { - options.memoryBase = memoryBase; -} - -/** Sets the `tableBase` option. */ -export function setTableBase(options: Options, tableBase: u32): void { - options.tableBase = tableBase; -} - -/** Sets a 'globalAliases' value. */ -export function setGlobalAlias(options: Options, alias: string, name: string): void { - var globalAliases = options.globalAliases; - if (!globalAliases) options.globalAliases = globalAliases = new Map(); - globalAliases.set(alias, name); -} - -/** Sets the `explicitStart` option. */ -export function setExplicitStart(options: Options, explicitStart: bool): void { - options.explicitStart = explicitStart; -} - -/** Sets the `noUnsafe` option. */ -export function setNoUnsafe(options: Options, noUnsafe: bool): void { - options.noUnsafe = noUnsafe; -} - -/** Sets the `lowMemoryLimit` option. */ -export function setLowMemoryLimit(options: Options, lowMemoryLimit: i32): void { - options.lowMemoryLimit = lowMemoryLimit; -} - -/** Sets the `exportRuntime` option. */ -export function setExportRuntime(options: Options, exportRuntime: bool): void { - options.exportRuntime = exportRuntime; -} - -/** Default stack size. */ -export const DEFAULT_STACK_SIZE = 16384; - -/** Sets the `stackSize` option. */ -export function setStackSize(options: Options, stackSize: i32): void { - options.stackSize = stackSize; -} - -/** Sets the bundle semantic version. */ -export function setBundleVersion( - options: Options, - bundleMajorVersion: i32, - bundleMinorVersion: i32, - bundlePatchVersion: i32, -): void { - options.bundleMajorVersion = bundleMajorVersion; - options.bundleMinorVersion = bundleMinorVersion; - options.bundlePatchVersion = bundlePatchVersion; -} - -/** Sign extension operations. */ -export const FEATURE_SIGN_EXTENSION = Feature.SIGN_EXTENSION; -/** Mutable global imports and exports. */ -export const FEATURE_MUTABLE_GLOBALS = Feature.MUTABLE_GLOBALS; -/** Non-trapping float to int conversion operations. */ -export const FEATURE_NONTRAPPING_F2I = Feature.NONTRAPPING_F2I; -/** Bulk memory operations. */ -export const FEATURE_BULK_MEMORY = Feature.BULK_MEMORY; -/** SIMD types and operations. */ -export const FEATURE_SIMD = Feature.SIMD; -/** Threading and atomic operations. */ -export const FEATURE_THREADS = Feature.THREADS; -/** Exception handling operations. */ -export const FEATURE_EXCEPTION_HANDLING = Feature.EXCEPTION_HANDLING; -/** Tail call operations. */ -export const FEATURE_TAIL_CALLS = Feature.TAIL_CALLS; -/** Reference types. */ -export const FEATURE_REFERENCE_TYPES = Feature.REFERENCE_TYPES; -/** Multi value types. */ -export const FEATURE_MULTI_VALUE = Feature.MULTI_VALUE; -/** Garbage collection. */ -export const FEATURE_GC = Feature.GC; -/** Memory64. */ -export const FEATURE_MEMORY64 = Feature.MEMORY64; - -/** Enables a specific feature. */ -export function enableFeature(options: Options, feature: Feature): void { - options.features |= feature; -} - -/** Disables a specific feature. */ -export function disableFeature(options: Options, feature: Feature): void { - options.features &= ~feature; -} - -/** Gives the compiler a hint at the optimize levels that will be used later on. */ -export function setOptimizeLevelHints(options: Options, optimizeLevel: i32, shrinkLevel: i32): void { - options.optimizeLevelHint = optimizeLevel; - options.shrinkLevelHint = shrinkLevel; -} - -/** Sets the `pedantic` option. */ -export function setPedantic(options: Options, pedantic: bool): void { - options.pedantic = pedantic; -} - -// Program - -/** Creates a new Program. */ -export function newProgram(options: Options): Program { - return new Program(options); -} - -/** Obtains the next diagnostic message. Returns `null` once complete. */ -export function nextDiagnostic(program: Program): DiagnosticMessage | null { - return program.diagnosticsOffset < program.diagnostics.length - ? program.diagnostics[program.diagnosticsOffset++] - : null; -} - -/** Obtains the source of the given file. */ -export function getSource(program: Program, internalPath: string): string | null { - return program.getSource(internalPath); -} - -/** Formats a diagnostic message to a string. */ -export { formatDiagnosticMessage as formatDiagnostic }; - -/** Tests whether a diagnostic is informatory. */ -export function isInfo(message: DiagnosticMessage): bool { - return message.category == DiagnosticCategory.INFO; -} - -/** Tests whether a diagnostic is a warning. */ -export function isWarning(message: DiagnosticMessage): bool { - return message.category == DiagnosticCategory.WARNING; -} - -/** Tests whether a diagnostic is an error. */ -export function isError(message: DiagnosticMessage): bool { - return message.category == DiagnosticCategory.ERROR; -} - -// Parser - -/** Parses a source file. If `parser` has been omitted a new one is created. */ -export function parse( - /** Program reference. */ - program: Program, - /** Source text of the file, or `null` to indicate not found. */ - text: string | null, - /** Normalized path of the file. */ - path: string, - /** Whether this is an entry file. */ - isEntry: bool = false -): void { - program.parser.parseFile(text, path, isEntry); -} - -/** Obtains the next required file's path. Returns `null` once complete. */ -export function nextFile(program: Program): string | null { - return program.parser.nextFile(); -} - -/** Obtains the path of the dependee of a given imported file. */ -export function getDependee(program: Program, file: string): string | null { - return program.parser.getDependee(file); -} - -// Compiler - -/** Initializes the program pre-emptively for transform hooks. */ -export function initializeProgram(program: Program): void { - program.initialize(); -} - -/** Compiles the parsed sources to a module. */ -export function compile(program: Program): Module { - program.parser.finish(); - return new Compiler(program).compile(); -} - -/** Builds WebIDL definitions for the specified program. */ -export function buildIDL(program: Program): string { - return IDLBuilder.build(program); -} - -/** Builds TypeScript definitions for the specified program. */ -export function buildTSD(program: Program): string { - return TSDBuilder.build(program); -} - -// Full API -export * from "./ast"; -export * from "./common"; -export * from "./compiler"; -export * from "./definitions"; -export * from "./diagnostics"; -export * from "./flow"; -export * from "./module"; -export * from "./parser"; -export * from "./program"; -export * from "./resolver"; -export * from "./tokenizer"; -export * from "./types"; -export * from "./extra/ast"; -import * as util from "./util/index"; -export { util }; +export * from "./index-js"; +import * as assemblyscript from "./index-js"; +export default assemblyscript; diff --git a/src/module.ts b/src/module.ts index bd979cd974..f002621e80 100644 --- a/src/module.ts +++ b/src/module.ts @@ -71,7 +71,7 @@ export namespace TypeRef { export enum FeatureFlags { MVP = 0 /* _BinaryenFeatureMVP */, Atomics = 1 /* _BinaryenFeatureAtomics */, - MutableGloabls = 2 /* _BinaryenFeatureMutableGlobals */, + MutableGlobals = 2 /* _BinaryenFeatureMutableGlobals */, TruncSat = 4 /* _BinaryenFeatureNontrappingFPToInt */, SIMD = 8 /* _BinaryenFeatureSIMD128 */, BulkMemory = 16 /* _BinaryenFeatureBulkMemory */, @@ -82,9 +82,10 @@ export enum FeatureFlags { MultiValue = 512 /* _BinaryenFeatureMultivalue */, GC = 1024 /* _BinaryenFeatureGC */, Memory64 = 2048 /* _BinaryenFeatureMemory64 */, - TypedFunctionReferences = 4096 /* _BinaryenFeatureTypedFunctionReferences */, + FunctionReferences = 4096 /* _BinaryenFeatureTypedFunctionReferences */, RelaxedSIMD = 16384 /* _BinaryenFeatureRelaxedSIMD */, - All = 32767 /* _BinaryenFeatureAll */ + ExtendedConst = 32768 /* _BinaryenFeatureExtendedConst */, + All = 65535 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. */ @@ -1472,6 +1473,17 @@ export class Module { return binaryen._BinaryenDrop(this.ref, expression); } + /** Drops an expression if it evaluates to a value. */ + maybeDrop( + expression: ExpressionRef + ): ExpressionRef { + var type = binaryen._BinaryenExpressionGetType(expression); + if (type != TypeRef.None && type != TypeRef.Unreachable) { + return binaryen._BinaryenDrop(this.ref, expression); + } + return expression; + } + maybeDropCondition(condition: ExpressionRef, result: ExpressionRef): ExpressionRef { // FIXME: This is necessary because Binaryen's ExpressionRunner bails early // when encountering a local with an unknown value. This helper only drops @@ -1574,7 +1586,7 @@ export class Module { results: TypeRef, isReturn: bool = false ): ExpressionRef { - var cStr = this.allocStringCached(tableName !== null ? tableName : "0"); + var cStr = this.allocStringCached(tableName != null ? tableName : "0"); var cArr = allocPtrArray(operands); var ret = isReturn ? binaryen._BinaryenReturnCallIndirect( @@ -2495,15 +2507,11 @@ export class Module { throw new Error("not implemented"); // JS glue overrides this } - toAsmjs(): string { - throw new Error("not implemented"); // JS glue overrides this - } - private cachedStringsToPointers: Map = new Map(); private cachedPointersToStrings: Map = new Map(); allocStringCached(str: string | null): usize { - if (str === null) return 0; + if (str == null) return 0; var cached = this.cachedStringsToPointers; if (cached.has(str)) return changetype(cached.get(str)); var ptr = allocString(str); @@ -2620,15 +2628,8 @@ export function expandType(type: TypeRef): TypeRef[] { var cArr = binaryen._malloc(arity << 2); binaryen._BinaryenTypeExpand(type, cArr); var types = new Array(arity); - if (!ASC_TARGET) { - let ptr = cArr >>> 2; - for (let i: u32 = 0; i < arity; ++i) { - types[i] = binaryen.HEAPU32[ptr + i]; - } - } else { - for (let i: u32 = 0; i < arity; ++i) { - types[i] = binaryen.__i32_load(cArr + (i << 2)); - } + for (let i: u32 = 0; i < arity; ++i) { + types[i] = binaryen.__i32_load(cArr + (i << 2)); } binaryen._free(cArr); return types; @@ -2668,12 +2669,22 @@ export function isConstZero(expr: ExpressionRef): bool { if (getExpressionId(expr) != ExpressionId.Const) return false; var type = getExpressionType(expr); if (type == TypeRef.I32) return getConstValueI32(expr) == 0; - if (type == TypeRef.I64) return getConstValueI64Low(expr) == 0 && getConstValueI64High(expr) == 0; + if (type == TypeRef.I64) return (getConstValueI64Low(expr) | getConstValueI64High(expr)) == 0; if (type == TypeRef.F32) return getConstValueF32(expr) == 0; if (type == TypeRef.F64) return getConstValueF64(expr) == 0; return false; } +export function isConstNonZero(expr: ExpressionRef): bool { + if (getExpressionId(expr) != ExpressionId.Const) return false; + var type = getExpressionType(expr); + if (type == TypeRef.I32) return getConstValueI32(expr) != 0; + if (type == TypeRef.I64) return (getConstValueI64Low(expr) | getConstValueI64High(expr)) != 0; + if (type == TypeRef.F32) return getConstValueF32(expr) != 0; + if (type == TypeRef.F64) return getConstValueF64(expr) != 0; + return false; +} + export function getLocalGetIndex(expr: ExpressionRef): Index { return binaryen._BinaryenLocalGetGetIndex(expr); } @@ -3040,8 +3051,8 @@ export function getSideEffects(expr: ExpressionRef, module: ModuleRef): SideEffe return binaryen._BinaryenExpressionGetSideEffects(expr, module); } -export function hasSideEffects(expr: ExpressionRef, module: ModuleRef): bool { - return getSideEffects(expr, module) != SideEffects.None; +export function mustPreserveSideEffects(expr: ExpressionRef, module: ModuleRef): bool { + return (getSideEffects(expr, module) & ~(SideEffects.ReadsLocal | SideEffects.ReadsGlobal)) != SideEffects.None; } // helpers @@ -3051,12 +3062,8 @@ function allocU8Array(u8s: Uint8Array | null): usize { if (!u8s) return 0; var len = u8s.length; var ptr = binaryen._malloc(len); - if (!ASC_TARGET) { - binaryen.HEAPU8.set(u8s, ptr); - } else { - for (let i = 0; i < len; ++i) { - binaryen.__i32_store8(ptr + i, u8s[i]); - } + for (let i = 0; i < len; ++i) { + binaryen.__i32_store8(ptr + i, u8s[i]); } return ptr; } @@ -3065,15 +3072,11 @@ function allocI32Array(i32s: i32[] | null): usize { if (!i32s) return 0; var len = i32s.length; var ptr = binaryen._malloc(len << 2); - if (!ASC_TARGET) { - binaryen.HEAP32.set(i32s, ptr >>> 2); - } else { - var idx = ptr; - for (let i = 0; i < len; ++i) { - let val = i32s[i]; - binaryen.__i32_store(idx, val); - idx += 4; - } + var idx = ptr; + for (let i = 0; i < len; ++i) { + let val = i32s[i]; + binaryen.__i32_store(idx, val); + idx += 4; } return ptr; } @@ -3082,15 +3085,11 @@ function allocU32Array(u32s: u32[] | null): usize { if (!u32s) return 0; var len = u32s.length; var ptr = binaryen._malloc(len << 2); - if (!ASC_TARGET) { - binaryen.HEAPU32.set(u32s, ptr >>> 2); - } else { - var idx = ptr; - for (let i = 0; i < len; ++i) { - let val = u32s[i]; - binaryen.__i32_store(idx, val); - idx += 4; - } + var idx = ptr; + for (let i = 0; i < len; ++i) { + let val = u32s[i]; + binaryen.__i32_store(idx, val); + idx += 4; } return ptr; } @@ -3101,15 +3100,11 @@ export function allocPtrArray(ptrs: usize[] | null): usize { assert(ASC_TARGET != Target.WASM64); var len = ptrs.length; var ptr = binaryen._malloc(len << 2); - if (!ASC_TARGET) { - binaryen.HEAPU32.set(ptrs, ptr >>> 2); - } else { - var idx = ptr; - for (let i = 0, k = len; i < k; ++i) { - let val = ptrs[i]; - binaryen.__i32_store(idx, val); - idx += 4; - } + var idx = ptr; + for (let i = 0, k = len; i < k; ++i) { + let val = ptrs[i]; + binaryen.__i32_store(idx, val); + idx += 4; } return ptr; } @@ -3136,21 +3131,15 @@ function stringLengthUTF8(str: string): usize { } function allocString(str: string | null): usize { - if (str === null) return 0; + if (str == null) return 0; var len = stringLengthUTF8(str); var ptr = binaryen._malloc(len + 1) >>> 0; var idx = ptr; - if (len === str.length) { + if (len == str.length) { // fast path when all chars are ascii - if (!ASC_TARGET) { - for (let i = 0, k = str.length; i < k; ++i) { - binaryen.HEAPU8[idx++] = str.charCodeAt(i); - } - } else { - for (let i = 0, k = str.length; i < k; ++i) { - let u = str.charCodeAt(i) >>> 0; - binaryen.__i32_store8(idx++, u as u8); - } + for (let i = 0, k = str.length; i < k; ++i) { + let u = str.charCodeAt(i) >>> 0; + binaryen.__i32_store8(idx++, u as u8); } } else { for (let i = 0, k = str.length; i < k; ++i) { @@ -3182,15 +3171,11 @@ function allocString(str: string | null): usize { } function readBuffer(ptr: usize, len: i32): Uint8Array { - if (!ASC_TARGET) { - return binaryen.HEAPU8.slice(ptr, ptr + len); - } else { - var ret = new Uint8Array(len); - for (let i = 0; i < len; ++i) { - ret[i] = binaryen.__i32_load8_u(ptr + i); - } - return ret; + var ret = new Uint8Array(len); + for (let i = 0; i < len; ++i) { + ret[i] = binaryen.__i32_load8_u(ptr + i); } + return ret; } export function readString(ptr: usize): string | null { diff --git a/src/parser.ts b/src/parser.ts index 60510cdcd0..b9dc2fc7b3 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -86,6 +86,7 @@ import { VariableDeclaration, VoidStatement, WhileStatement, + ModuleDeclaration, mangleInternalPath } from "./ast"; @@ -115,6 +116,8 @@ export class Parser extends DiagnosticEmitter { dependees: Map = new Map(); /** An array of parsed sources. */ sources: Source[]; + /** Current overridden module name. */ + currentModuleName: string | null = null; /** Constructs a new parser. */ constructor( @@ -144,7 +147,7 @@ export class Parser extends DiagnosticEmitter { this.seenlog.add(internalPath); // do not request again // check if this is an error - if (text === null) { + if (text == null) { let dependees = this.dependees; let dependee: Dependee | null = null; if (dependees.has(internalPath)) dependee = assert(dependees.get(internalPath)); @@ -173,6 +176,7 @@ export class Parser extends DiagnosticEmitter { this.sources.push(source); this.currentSource = source; + this.currentModuleName = null; // tokenize and parse var tn = new Tokenizer(source, this.diagnostics); @@ -193,7 +197,7 @@ export class Parser extends DiagnosticEmitter { tn: Tokenizer, namespace: NamespaceDeclaration | null = null ): Statement | null { - var flags = CommonFlags.NONE; + var flags = namespace ? namespace.flags & CommonFlags.AMBIENT : CommonFlags.NONE; var startPos = -1; // check decorators @@ -351,6 +355,18 @@ export class Parser extends DiagnosticEmitter { } break; } + case Token.MODULE: { // also identifier + let state = tn.mark(); + tn.next(); + if (tn.peek(true) == Token.STRINGLITERAL && !tn.nextTokenOnNewLine) { + tn.discard(state); + statement = this.parseModuleDeclaration(tn, flags); + } else { + tn.reset(state); + statement = this.parseStatement(tn, true); + } + break; + } default: { // handle plain exports @@ -401,7 +417,7 @@ export class Parser extends DiagnosticEmitter { } // check if this an `export default` declaration - if (defaultEnd && statement !== null) { + if (defaultEnd && statement != null) { switch (statement.kind) { case NodeKind.ENUMDECLARATION: case NodeKind.FUNCTIONDECLARATION: @@ -917,6 +933,7 @@ export class Parser extends DiagnosticEmitter { do { let declaration = this.parseVariableDeclaration(tn, flags, decorators, isFor); if (!declaration) return null; + declaration.overriddenModuleName = this.currentModuleName; declarations.push(declaration); } while (tn.skip(Token.COMMA)); @@ -984,7 +1001,7 @@ export class Parser extends DiagnosticEmitter { } } var range = Range.join(identifier.range, tn.range()); - if (initializer !== null && (flags & CommonFlags.DEFINITELY_ASSIGNED) != 0) { + if (initializer && (flags & CommonFlags.DEFINITELY_ASSIGNED) != 0) { this.error( DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context, range @@ -1048,6 +1065,7 @@ export class Parser extends DiagnosticEmitter { members, tn.range(startPos, tn.pos) ); + ret.overriddenModuleName = this.currentModuleName; tn.skip(Token.SEMICOLON); return ret; } @@ -1113,7 +1131,7 @@ export class Parser extends DiagnosticEmitter { while (!tn.skip(Token.GREATERTHAN)) { let typeParameter = this.parseTypeParameter(tn); if (!typeParameter) return null; - if (typeParameter.defaultType !== null) { + if (typeParameter.defaultType) { seenOptional = true; } else if (seenOptional) { this.error( @@ -1248,7 +1266,7 @@ export class Parser extends DiagnosticEmitter { while (!tn.skip(Token.CLOSEPAREN)) { let param = this.parseParameter(tn, isConstructor); // reports if (!param) return null; - if (seenRest !== null && !reportedRest) { + if (seenRest && !reportedRest) { this.error( DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list, seenRest.name.range @@ -1451,7 +1469,7 @@ export class Parser extends DiagnosticEmitter { name.range ); // recoverable } - if (parameters.length > 0 && parameters[0].initializer !== null) { + if (parameters.length > 0 && parameters[0].initializer) { this.error( DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer, name.range @@ -1522,6 +1540,7 @@ export class Parser extends DiagnosticEmitter { ArrowKind.NONE, tn.range(startPos, tn.pos) ); + ret.overriddenModuleName = this.currentModuleName; tn.skip(Token.SEMICOLON); return ret; } @@ -1772,6 +1791,7 @@ export class Parser extends DiagnosticEmitter { } while (!tn.skip(Token.CLOSEBRACE)); } declaration.range.end = tn.pos; + declaration.overriddenModuleName = this.currentModuleName; return declaration; } @@ -1857,7 +1877,7 @@ export class Parser extends DiagnosticEmitter { if (!decorators) decorators = new Array(); decorators.push(decorator); } while (tn.skip(Token.AT)); - if (isInterface && decorators !== null) { + if (isInterface && decorators) { this.error( DiagnosticCode.Decorators_are_not_valid_here, Range.join(decorators[0].range, decorators[decorators.length - 1].range) @@ -2182,7 +2202,7 @@ export class Parser extends DiagnosticEmitter { name.range ); } - if (parameters.length > 0 && parameters[0].initializer !== null) { + if (parameters.length > 0 && parameters[0].initializer) { this.error( DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer, name.range @@ -2344,7 +2364,7 @@ export class Parser extends DiagnosticEmitter { let range = tn.range(startPos, tn.pos); if ( (flags & CommonFlags.DEFINITELY_ASSIGNED) != 0 && - (isInterface || initializer !== null || (flags & CommonFlags.STATIC) != 0) + (isInterface || initializer || (flags & CommonFlags.STATIC) != 0) ) { this.error( DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context, @@ -2375,7 +2395,7 @@ export class Parser extends DiagnosticEmitter { // at: '[': 'key' ':' Type ']' ':' Type - if (decorators !== null && decorators.length > 0) { + if (decorators && decorators.length > 0) { this.error( DiagnosticCode.Decorators_are_not_valid_here, Range.join(decorators[0].range, decorators[decorators.length - 1].range) @@ -2476,6 +2496,7 @@ export class Parser extends DiagnosticEmitter { } } declaration.range.end = tn.pos; + declaration.overriddenModuleName = this.currentModuleName; tn.skip(Token.SEMICOLON); return declaration; } else { @@ -2533,7 +2554,7 @@ export class Parser extends DiagnosticEmitter { } } let ret = Node.createExportStatement(members, path, isDeclare, tn.range(startPos, tn.pos)); - if (path !== null) { + if (path) { let internalPath = assert(ret.internalPath); if (!this.seenlog.has(internalPath)) { this.dependees.set(internalPath, new Dependee(currentSource, path)); @@ -3487,6 +3508,7 @@ export class Parser extends DiagnosticEmitter { tn.range(startPos, tn.pos) ); tn.skip(Token.SEMICOLON); + ret.overriddenModuleName = this.currentModuleName; return ret; } else { this.error( @@ -3503,6 +3525,22 @@ export class Parser extends DiagnosticEmitter { return null; } + parseModuleDeclaration( + tn: Tokenizer, + flags: CommonFlags + ): ModuleDeclaration | null { + + // at 'module': StringLiteral ';'? + + var startPos = tn.tokenPos; + assert(tn.next() == Token.STRINGLITERAL); // checked earlier + var moduleName = tn.readString(); + var ret = Node.createModuleDeclaration(moduleName, flags, tn.range(startPos, tn.pos)); + this.currentModuleName = moduleName; + tn.skip(Token.SEMICOLON); + return ret; + } + parseVoidStatement( tn: Tokenizer ): VoidStatement | null { @@ -3606,7 +3644,7 @@ export class Parser extends DiagnosticEmitter { let arguments_: Expression[] | null = null; if ( tn.skip(Token.OPENPAREN) || - (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) !== null + (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) ) { arguments_ = this.parseArguments(tn); if (!arguments_) return null; @@ -3919,7 +3957,7 @@ export class Parser extends DiagnosticEmitter { var start = tn.tokenPos; var typeArguments: TypeNode[] | null = null; do { - if (tn.peek() === Token.GREATERTHAN) { + if (tn.peek() == Token.GREATERTHAN) { break; } let type = this.parseType(tn, true, true); @@ -4258,7 +4296,7 @@ export class Parser extends DiagnosticEmitter { while ( tn.skip(Token.OPENPAREN) || potentiallyGeneric && - (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) !== null + (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) ) { let args = this.parseArguments(tn); if (!args) break; diff --git a/src/program.ts b/src/program.ts index e1faf7596f..6bb1dea523 100644 --- a/src/program.ts +++ b/src/program.ts @@ -44,7 +44,7 @@ import { GETTER_PREFIX, SETTER_PREFIX, INNER_DELIMITER, - LIBRARY_SUBST, + LIBRARY_PREFIX, INDEX_SUFFIX, STUB_DELIMITER, CommonNames, @@ -218,8 +218,8 @@ export enum OperatorKind { BITWISE_SHL, // a << b BITWISE_SHR, // a >> b BITWISE_SHR_U, // a >>> b - EQ, // a == b - NE, // a != b + EQ, // a == b, a === b + NE, // a != b, a !== b GT, // a > b GE, // a >= b LT, // a < b @@ -238,7 +238,6 @@ export enum OperatorKind { POSTFIX_DEC // a-- // not overridable: - // IDENTITY // a === b // LOGICAL_AND // a && b // LOGICAL_OR // a || b } @@ -430,7 +429,7 @@ export class Program extends DiagnosticEmitter { diagnostics: DiagnosticMessage[] | null = null ) { super(diagnostics); - var nativeSource = new Source(SourceKind.LIBRARY_ENTRY, LIBRARY_SUBST + ".wasm", "[native code]"); + var nativeSource = new Source(SourceKind.LIBRARY_ENTRY, LIBRARY_PREFIX + "native.ts", "[native code]"); this.nativeSource = nativeSource; this.parser = new Parser(this.diagnostics, this.sources); this.resolver = new Resolver(this); @@ -476,6 +475,10 @@ export class Program extends DiagnosticEmitter { managedClasses: Map = new Map(); /** A set of unique function signatures contained in the program, by id. */ uniqueSignatures: Signature[] = new Array(0); + /** Module exports. */ + moduleExports: Map = new Map(); + /** Module imports. */ + moduleImports: Map> = new Map(); // Standard library @@ -1061,6 +1064,12 @@ export class Program extends DiagnosticEmitter { i64_new(options.hasFeature(Feature.GC) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_MEMORY64, Type.bool, i64_new(options.hasFeature(Feature.MEMORY64) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_FUNCTION_REFERENCES, Type.bool, + i64_new(options.hasFeature(Feature.FUNCTION_REFERENCES) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_RELAXED_SIMD, Type.bool, + i64_new(options.hasFeature(Feature.RELAXED_SIMD) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_EXTENDED_CONST, Type.bool, + i64_new(options.hasFeature(Feature.EXTENDED_CONST)? 1 : 0, 0)); // remember deferred elements var queuedImports = new Array(); @@ -1230,7 +1239,7 @@ export class Program extends DiagnosticEmitter { file.ensureExport(exportName, element); } else { let globalElement = this.lookup(localName); - if (globalElement !== null && isDeclaredElement(globalElement.kind)) { // export { memory } + if (globalElement && isDeclaredElement(globalElement.kind)) { // export { memory } file.ensureExport(exportName, globalElement); } else { this.error( @@ -1497,7 +1506,7 @@ export class Program extends DiagnosticEmitter { } } let baseSetter = baseProperty.setterPrototype; - if (baseSetter !== null && thisProperty.setterPrototype !== null) { + if (baseSetter && thisProperty.setterPrototype) { baseSetter.set(CommonFlags.VIRTUAL); let thisSetter = thisProperty.setterPrototype; if (thisSetter) { @@ -1616,6 +1625,20 @@ export class Program extends DiagnosticEmitter { } } + /** Marks an element as a module import. */ + markModuleImport(moduleName: string, name: string, element: Element): void { + element.set(CommonFlags.MODULE_IMPORT); + var moduleImports = this.moduleImports; + var module: Map; + if (moduleImports.has(moduleName)) { + module = assert(moduleImports.get(moduleName)); + } else { + module = new Map(); + moduleImports.set(moduleName, module); + } + module.set(name, element); + } + /** Registers a native type with the program. */ private registerNativeType(name: string, type: Type): void { var element = new TypeDefinition( @@ -1675,7 +1698,7 @@ export class Program extends DiagnosticEmitter { // user has multiple global elements of the same name in different files, // which might result in unexpected shared symbols accross files. considering // this a wonky feature for now that we might want to revisit later. - if (existing !== element) { + if (existing != element) { let merged = tryMerge(existing, element); if (!merged) { if (isDeclaredElement(existing.kind)) { @@ -1868,7 +1891,7 @@ export class Program extends DiagnosticEmitter { this.initializeProperty(methodDeclaration, element); } else { let method = this.initializeMethod(methodDeclaration, element); - if (method !== null && methodDeclaration.name.kind == NodeKind.CONSTRUCTOR) { + if (method && methodDeclaration.name.kind == NodeKind.CONSTRUCTOR) { element.constructorPrototype = method; } } @@ -2023,7 +2046,7 @@ export class Program extends DiagnosticEmitter { var name = declaration.name.text; if (declaration.is(CommonFlags.STATIC)) { let parentMembers = parent.members; - if (parentMembers !== null && parentMembers.has(name)) { + if (parentMembers && parentMembers.has(name)) { let element = assert(parentMembers.get(name)); if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element; } else { @@ -2033,7 +2056,7 @@ export class Program extends DiagnosticEmitter { } } else { let parentMembers = parent.instanceMembers; - if (parentMembers !== null && parentMembers.has(name)) { + if (parentMembers && parentMembers.has(name)) { let element = assert(parentMembers.get(name)); if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element; } else { @@ -2192,7 +2215,7 @@ export class Program extends DiagnosticEmitter { return; } // local element, i.e. export { foo [as bar] } - if (foreignPath === null) { + if (foreignPath == null) { // resolve right away if the local element already exists if (element = localFile.getMember(localName)) { @@ -2365,7 +2388,7 @@ export class Program extends DiagnosticEmitter { var name = declaration.name.text; var validDecorators = DecoratorFlags.UNSAFE | DecoratorFlags.BUILTIN; if (declaration.is(CommonFlags.AMBIENT)) { - validDecorators |= DecoratorFlags.EXTERNAL; + validDecorators |= DecoratorFlags.EXTERNAL | DecoratorFlags.EXTERNAL_JS; } else { validDecorators |= DecoratorFlags.INLINE; if (declaration.range.source.isLibrary || declaration.is(CommonFlags.EXPORT)) { @@ -2578,7 +2601,7 @@ export class Program extends DiagnosticEmitter { let declaration = declarations[i]; let name = declaration.name.text; let acceptedFlags = DecoratorFlags.GLOBAL | DecoratorFlags.LAZY; - if (declaration.is(CommonFlags.DECLARE)) { + if (declaration.is(CommonFlags.AMBIENT)) { acceptedFlags |= DecoratorFlags.EXTERNAL; } if (declaration.is(CommonFlags.CONST)) { @@ -2682,12 +2705,14 @@ export enum DecoratorFlags { INLINE = 1 << 6, /** Is using a different external name. */ EXTERNAL = 1 << 7, + /** Has external JavaScript code. */ + EXTERNAL_JS = 1 << 8, /** Is a builtin. */ - BUILTIN = 1 << 8, + BUILTIN = 1 << 9, /** Is compiled lazily. */ - LAZY = 1 << 9, + LAZY = 1 << 10, /** Is considered unsafe code. */ - UNSAFE = 1 << 10 + UNSAFE = 1 << 11 } export namespace DecoratorFlags { @@ -2704,6 +2729,7 @@ export namespace DecoratorFlags { case DecoratorKind.FINAL: return DecoratorFlags.FINAL; case DecoratorKind.INLINE: return DecoratorFlags.INLINE; case DecoratorKind.EXTERNAL: return DecoratorFlags.EXTERNAL; + case DecoratorKind.EXTERNAL_JS: return DecoratorFlags.EXTERNAL_JS; case DecoratorKind.BUILTIN: return DecoratorFlags.BUILTIN; case DecoratorKind.LAZY: return DecoratorFlags.LAZY; case DecoratorKind.UNSAFE: return DecoratorFlags.UNSAFE; @@ -2769,6 +2795,8 @@ export abstract class Element { unset(flag: CommonFlags): void {this.flags &= ~flag; } /** Tests if this element has a specific decorator flag or flags. */ hasDecorator(flag: DecoratorFlags): bool { return (this.decoratorFlags & flag) == flag; } + /** Tests if this element has any of the specified decorator flags. */ + hasAnyDecorator(flags: DecoratorFlags): bool { return (this.decoratorFlags & flags) != 0; } /** Get the member with the specified name, if any. */ getMember(name: string): DeclaredElement | null { @@ -2789,7 +2817,7 @@ export abstract class Element { if (!members) this.members = members = new Map(); else if (members.has(name)) { let existing = assert(members.get(name)); - if (existing.parent !== this) { + if (existing.parent != this) { // override non-own element } else { let merged = tryMerge(existing, element); @@ -3090,7 +3118,7 @@ export class File extends Element { /** Looks up the export of the specified name. */ lookupExport(name: string): DeclaredElement | null { var exports = this.exports; - if (exports !== null && exports.has(name)) return assert(exports.get(name)); + if (exports && exports.has(name)) return assert(exports.get(name)); var exportsStar = this.exportsStar; if (exportsStar) { for (let i = 0, k = exportsStar.length; i < k; ++i) { @@ -3517,7 +3545,7 @@ export class FunctionPrototype extends DeclaredElement { /** Gets the resolved instance for the specified instance key, if already resolved. */ getResolvedInstance(instanceKey: string): Function | null { var instances = this.instances; - if (instances !== null && instances.has(instanceKey)) return assert(instances.get(instanceKey)); + if (instances && instances.has(instanceKey)) return assert(instances.get(instanceKey)); return null; } @@ -3665,7 +3693,7 @@ export class Function extends TypedElement { // if it has a name, check previously as this method will throw otherwise var localIndex = this.signature.parameterTypes.length + this.additionalLocals.length; if (this.is(CommonFlags.INSTANCE)) ++localIndex; - var localName = name !== null + var localName = name != null ? name : "var$" + localIndex.toString(); if (!declaration) declaration = this.program.makeNativeVariableDeclaration(localName); @@ -3823,7 +3851,7 @@ export class Field extends VariableLikeElement { /** Gets the internal name of the respective getter function. */ get internalGetterName(): string { var cached = this._internalGetterName; - if (cached === null) this._internalGetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + GETTER_PREFIX + this.name; + if (cached == null) this._internalGetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + GETTER_PREFIX + this.name; return cached; } private _internalGetterName: string | null = null; @@ -3831,7 +3859,7 @@ export class Field extends VariableLikeElement { /** Gets the internal name of the respective setter function. */ get internalSetterName(): string { var cached = this._internalSetterName; - if (cached === null) this._internalSetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + SETTER_PREFIX + this.name; + if (cached == null) this._internalSetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + SETTER_PREFIX + this.name; return cached; } private _internalSetterName: string | null = null; @@ -4048,8 +4076,7 @@ export class ClassPrototype extends DeclaredElement { /** Tests if this prototype is of a builtin array type (Array/TypedArray). */ get isBuiltinArray(): bool { var arrayBufferViewInstance = this.program.arrayBufferViewInstance; - return arrayBufferViewInstance !== null - && this.extends(arrayBufferViewInstance.prototype); + return arrayBufferViewInstance && this.extends(arrayBufferViewInstance.prototype); } /** Tests if this prototype extends the specified. */ @@ -4060,7 +4087,7 @@ export class ClassPrototype extends DeclaredElement { // cannot directly or indirectly extend itself if (seen.has(current)) break; seen.add(current); - if (current === basePtototype) return true; + if (current == basePtototype) return true; current = current.basePrototype; } while (current); return false; @@ -4103,7 +4130,7 @@ export class ClassPrototype extends DeclaredElement { /** Gets the resolved instance for the specified instance key, if already resolved. */ getResolvedInstance(instanceKey: string): Class | null { var instances = this.instances; - if (instances !== null && instances.has(instanceKey)) return instances.get(instanceKey); + if (instances && instances.has(instanceKey)) return instances.get(instanceKey); return null; } @@ -4166,15 +4193,16 @@ export class Class extends TypedElement { get isArrayLike(): bool { if (this.isBuiltinArray) return true; var lengthField = this.getMember("length"); - return lengthField !== null && ( + if (!lengthField) return false; + return ( lengthField.kind == ElementKind.FIELD || ( lengthField.kind == ElementKind.PROPERTY_PROTOTYPE && - (lengthField).getterPrototype !== null // TODO: resolve & check type? + (lengthField).getterPrototype != null // TODO: resolve & check type? ) ) && ( - this.lookupOverload(OperatorKind.INDEXED_GET) !== null || - this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET) !== null + this.lookupOverload(OperatorKind.INDEXED_GET) != null || + this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET) != null ); } @@ -4226,7 +4254,7 @@ export class Class extends TypedElement { contextualTypeArguments.set(typeParameters[i].name.text, typeArguments[i]); } } - } else if (typeParameters !== null && typeParameters.length > 0) { + } else if (typeParameters && typeParameters.length > 0) { throw new Error("type argument count mismatch"); } registerConcreteElement(program, this); @@ -4349,7 +4377,7 @@ export class Class extends TypedElement { /** Writes a field value to a buffer and returns the number of bytes written. */ writeField(name: string, value: T, buffer: Uint8Array, baseOffset: i32 = this.program.totalOverhead): i32 { var member = this.getMember(name); - if (member !== null && member.kind == ElementKind.FIELD) { + if (member && member.kind == ElementKind.FIELD) { let fieldInstance = member; let offset = baseOffset + fieldInstance.memoryOffset; let typeKind = fieldInstance.type.kind; @@ -4424,7 +4452,7 @@ export class Class extends TypedElement { getTypeArgumentsTo(extendedPrototype: ClassPrototype): Type[] | null { var current: Class | null = this; do { - if (current.prototype === extendedPrototype) return current.typeArguments; + if (current.prototype == extendedPrototype) return current.typeArguments; current = current.base; } while (current); return null; @@ -4443,7 +4471,7 @@ export class Class extends TypedElement { return this.getTypeArgumentsTo(staticArrayPrototype)![0]; } var abvInstance = program.arrayBufferViewInstance; - while (current.base !== abvInstance) { + while (current.base != abvInstance) { current = assert(current.base); } var prototype = current.prototype; @@ -4520,7 +4548,7 @@ export class Class extends TypedElement { let extendee = _values[i]; if (exceptIfMember) { let instanceMembers = extendee.prototype.instanceMembers; - if (instanceMembers !== null && instanceMembers.has(exceptIfMember)) continue; + if (instanceMembers && instanceMembers.has(exceptIfMember)) continue; } out.add(extendee); extendee.getAllExtendees(exceptIfMember, out); @@ -4581,7 +4609,7 @@ function registerConcreteElement(program: Program, element: Element): void { function tryMerge(older: Element, newer: Element): DeclaredElement | null { // NOTE: some of the following cases are not supported by TS, not sure why exactly. // suggesting to just merge what seems to be possible for now and revisit later. - assert(older.program === newer.program); + assert(older.program == newer.program); if (newer.members) return null; var merged: DeclaredElement | null = null; switch (older.kind) { diff --git a/src/resolver.ts b/src/resolver.ts index 8de0697ddf..db485a0973 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -191,9 +191,9 @@ export class Resolver extends DiagnosticEmitter { // Look up in contextual types if a simple type if (isSimpleType) { let simpleName = nameNode.identifier.text; - if (ctxTypes !== null && ctxTypes.has(simpleName)) { + if (ctxTypes && ctxTypes.has(simpleName)) { let type = assert(ctxTypes.get(simpleName)); - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { if (reportMode == ReportMode.REPORT) { this.error( DiagnosticCode.Type_0_is_not_generic, @@ -227,7 +227,7 @@ export class Resolver extends DiagnosticEmitter { // Handle enums (become i32) if (element.kind == ElementKind.ENUM) { - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { if (reportMode == ReportMode.REPORT) { this.error( DiagnosticCode.Type_0_is_not_generic, @@ -270,7 +270,7 @@ export class Resolver extends DiagnosticEmitter { // Shortcut already resolved (mostly builtins) if (element.is(CommonFlags.RESOLVED)) { - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { if (reportMode == ReportMode.REPORT) { this.error( DiagnosticCode.Type_0_is_not_generic, @@ -314,7 +314,7 @@ export class Resolver extends DiagnosticEmitter { reportMode ); if (!typeArguments) return null; - } else if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + } else if (typeArgumentNodes && typeArgumentNodes.length > 0) { this.error( DiagnosticCode.Type_0_is_not_generic, node.range, nameNode.identifier.text @@ -805,14 +805,14 @@ export class Resolver extends DiagnosticEmitter { if (node.kind == NodeKind.NAMEDTYPE) { let namedTypeNode = node; let typeArgumentNodes = namedTypeNode.typeArguments; - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { // foo(bar: Array) + if (typeArgumentNodes && typeArgumentNodes.length > 0) { // foo(bar: Array) let classReference = type.classReference; if (classReference) { let classPrototype = this.resolveTypeName(namedTypeNode.name, ctxFlow.actualFunction); if (!classPrototype || classPrototype.kind != ElementKind.CLASS_PROTOTYPE) return; if (classReference.prototype == classPrototype) { let typeArguments = classReference.typeArguments; - if (typeArguments !== null && typeArguments.length == typeArgumentNodes.length) { + if (typeArguments && typeArguments.length == typeArgumentNodes.length) { for (let i = 0, k = typeArguments.length; i < k; ++i) { this.propagateInferredGenericTypes(typeArgumentNodes[i], typeArguments[i], ctxFlow, ctxTypes, typeParameterNames); } @@ -832,7 +832,7 @@ export class Resolver extends DiagnosticEmitter { } else if (node.kind == NodeKind.FUNCTIONTYPE) { // foo(bar: (baz: T) => i32)) let functionTypeNode = node; let parameterNodes = functionTypeNode.parameters; - if (parameterNodes !== null && parameterNodes.length > 0) { + if (parameterNodes && parameterNodes.length > 0) { let signatureReference = type.signatureReference; if (signatureReference) { let parameterTypes = signatureReference.parameterTypes; @@ -2120,7 +2120,7 @@ export class Resolver extends DiagnosticEmitter { } } var parent: Element | null = ctxFlow.actualFunction.parent; - if (parent !== null && parent.kind == ElementKind.CLASS) { + if (parent && parent.kind == ElementKind.CLASS) { let base = (parent).base; if (base) { this.currentThisExpression = null; @@ -2193,7 +2193,7 @@ export class Resolver extends DiagnosticEmitter { } case LiteralKind.ARRAY: { let classReference = ctxType.getClass(); - if (classReference !== null && classReference.prototype == this.program.arrayPrototype) { + if (classReference && classReference.prototype == this.program.arrayPrototype) { return this.getElementOfType(ctxType); } // otherwise infer, ignoring ctxType @@ -2350,7 +2350,7 @@ export class Resolver extends DiagnosticEmitter { } case ElementKind.CLASS: { let typeArguments = (target).getTypeArgumentsTo(this.program.functionPrototype); - if (typeArguments !== null && typeArguments.length > 0) { + if (typeArguments && typeArguments.length > 0) { let ftype = typeArguments[0]; let signatureReference = assert(ftype.signatureReference); return signatureReference.returnType; @@ -2623,8 +2623,8 @@ export class Resolver extends DiagnosticEmitter { var signatureNode = prototype.functionTypeNode; var typeParameterNodes = prototype.typeParameterNodes; var numFunctionTypeArguments: i32; - if (typeArguments !== null && (numFunctionTypeArguments = typeArguments.length) > 0) { - assert(typeParameterNodes !== null && numFunctionTypeArguments == typeParameterNodes.length); + if (typeArguments && (numFunctionTypeArguments = typeArguments.length) > 0) { + assert(typeParameterNodes && numFunctionTypeArguments == typeParameterNodes.length); for (let i = 0; i < numFunctionTypeArguments; ++i) { ctxTypes.set( (typeParameterNodes)[i].name.text, @@ -2801,7 +2801,7 @@ export class Resolver extends DiagnosticEmitter { // Otherwise make sure that no type arguments have been specified } else { - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { if (reportMode == ReportMode.REPORT) { this.error( DiagnosticCode.Type_0_is_not_generic, @@ -2919,7 +2919,7 @@ export class Resolver extends DiagnosticEmitter { } } else { let typeParameterNodes = prototype.typeParameterNodes; - assert(!(typeParameterNodes !== null && typeParameterNodes.length > 0)); + assert(!(typeParameterNodes && typeParameterNodes.length > 0)); } instance.contextualTypeArguments = ctxTypes; @@ -3091,7 +3091,7 @@ export class Resolver extends DiagnosticEmitter { let existingField: Field | null = null; if (base) { let baseMembers = base.members; - if (baseMembers !== null && baseMembers.has(fieldPrototype.name)) { + if (baseMembers && baseMembers.has(fieldPrototype.name)) { let baseField = assert(baseMembers.get(fieldPrototype.name)); if (baseField.kind == ElementKind.FIELD) { existingField = baseField; @@ -3105,7 +3105,7 @@ export class Resolver extends DiagnosticEmitter { } } if (!fieldTypeNode) { - if (existingField !== null && !existingField.is(CommonFlags.PRIVATE)) { + if (existingField && !existingField.is(CommonFlags.PRIVATE)) { fieldType = existingField.type; } if (!fieldType) { @@ -3134,7 +3134,7 @@ export class Resolver extends DiagnosticEmitter { } } if (!fieldType) break; // did report above - if (existingField !== null) { + if (existingField) { // visibility checks /* existingField visibility on top @@ -3203,7 +3203,7 @@ export class Resolver extends DiagnosticEmitter { } let fieldInstance = new Field(fieldPrototype, instance, fieldType); assert(isPowerOf2(fieldType.byteSize)); - if (existingField !== null) { + if (existingField) { fieldInstance.memoryOffset = existingField.memoryOffset; } else { let mask = fieldType.byteSize - 1; @@ -3243,7 +3243,7 @@ export class Resolver extends DiagnosticEmitter { ); } else { let propertySetter = property.setterInstance; - if (propertySetter !== null && !propertyGetter.visibilityEquals(propertySetter)) { + if (propertySetter && !propertyGetter.visibilityEquals(propertySetter)) { this.errorRelated( DiagnosticCode.Getter_and_setter_accessors_do_not_agree_in_visibility, propertyGetter.identifierNode.range, propertySetter.identifierNode.range @@ -3273,7 +3273,7 @@ export class Resolver extends DiagnosticEmitter { // Link _own_ constructor if present { let ctorPrototype = instance.getMember(CommonNames.constructor); - if (ctorPrototype !== null && ctorPrototype.parent === instance) { + if (ctorPrototype && ctorPrototype.parent == instance) { assert(ctorPrototype.kind == ElementKind.FUNCTION_PROTOTYPE); let ctorInstance = this.resolveFunction( ctorPrototype, @@ -3367,13 +3367,13 @@ export class Resolver extends DiagnosticEmitter { // pending classes being resolved. for (let _values = Set_values(pendingClasses), i = 0, k = _values.length; i < k; ++i) { let pending = _values[i]; - let dependsOnInstance = pending.base === instance; + let dependsOnInstance = pending.base == instance; let interfaces = pending.interfaces; if (interfaces) { let anyPending = false; for (let _values2 = Set_values(interfaces), j = 0, l = _values2.length; j < l; ++j) { let iface = _values2[j]; - if (iface === instance) dependsOnInstance = true; + if (iface == instance) dependsOnInstance = true; else if (pendingClasses.has(iface)) anyPending = true; } if (anyPending) continue; @@ -3413,7 +3413,7 @@ export class Resolver extends DiagnosticEmitter { // Otherwise make sure that no type arguments have been specified } else { - if (typeArgumentNodes !== null && typeArgumentNodes.length > 0) { + if (typeArgumentNodes && typeArgumentNodes.length > 0) { if (reportMode == ReportMode.REPORT) { this.error( DiagnosticCode.Type_0_is_not_generic, diff --git a/src/tsconfig.json b/src/tsconfig.json index 0acc81470a..379a91ad15 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../std/portable.json", "compilerOptions": { - "outDir": "../out", + "outDir": "../build", "types" : ["node"], "allowJs": false, "sourceMap": true, @@ -10,7 +10,8 @@ "useDefineForClassFields": false, "strict": true, "noImplicitReturns": true, - "noPropertyAccessFromIndexSignature": true + "noPropertyAccessFromIndexSignature": true, + "esModuleInterop": true }, "include": [ "./**/*.ts" diff --git a/src/types.ts b/src/types.ts index 061982cbdc..ac2ee9c1f4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -261,7 +261,7 @@ export class Type { /** Tests if this type represents a class. */ get isClass(): bool { return this.isInternalReference - ? this.classReference !== null + ? this.classReference != null : false; } @@ -300,7 +300,7 @@ export class Type { /** Tests if this type represents a function. */ get isFunction(): bool { return this.isInternalReference - ? this.signatureReference !== null + ? this.signatureReference != null : false; } @@ -316,7 +316,7 @@ export class Type { if (this.isInternalReference) { let classReference = this.classReference; if (classReference) return !classReference.hasDecorator(DecoratorFlags.UNMANAGED); - return this.signatureReference !== null; // function references are managed + return this.signatureReference != null; // function references are managed } return false; } @@ -324,7 +324,7 @@ export class Type { /** Tests if this is a class type explicitly annotated as unmanaged. */ get isUnmanaged(): bool { var classReference = this.classReference; - return classReference !== null && classReference.hasDecorator(DecoratorFlags.UNMANAGED); + return classReference != null && classReference.hasDecorator(DecoratorFlags.UNMANAGED); } /** Gets the corresponding non-nullable type. */ @@ -812,8 +812,8 @@ export class Signature { // check `this` type var thisThisType = this.thisType; var otherThisType = other.thisType; - if (thisThisType !== null) { - if (otherThisType === null || !thisThisType.equals(otherThisType)) return false; + if (thisThisType) { + if (!otherThisType || !thisThisType.equals(otherThisType)) return false; } else if (otherThisType) { return false; } @@ -840,8 +840,8 @@ export class Signature { // check `this` type var thisThisType = this.thisType; var targetThisType = target.thisType; - if (thisThisType !== null) { - if (targetThisType === null || !thisThisType.isAssignableTo(targetThisType)) return false; + if (thisThisType) { + if (!targetThisType || !thisThisType.isAssignableTo(targetThisType)) return false; } else if (targetThisType) { return false; } diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 0000000000..6cbfb53383 --- /dev/null +++ b/src/util.ts @@ -0,0 +1,12 @@ +/** + * @fileoverview Various utility. + * @license Apache-2.0 + */ + +export * from "./util/binary"; +export * from "./util/collections"; +export * from "./util/math"; +export * from "./util/path"; +export * from "./util/terminal"; +export * from "./util/text"; +export * from "./util/vector"; diff --git a/src/util/index.ts b/src/util/index.ts deleted file mode 100644 index 5900f8c1ca..0000000000 --- a/src/util/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @fileoverview Various utility. - * @license Apache-2.0 - */ - -export * from "./binary"; -export * from "./collections"; -export * from "./math"; -export * from "./path"; -export * from "./terminal"; -export * from "./text"; -export * from "./vector"; diff --git a/src/util/text.ts b/src/util/text.ts index 6b3598e061..d76d9a2408 100644 --- a/src/util/text.ts +++ b/src/util/text.ts @@ -263,6 +263,17 @@ export function isIdentifierPart(c: i32): bool { && lookupInUnicodeMap(c as u16, unicodeIdentifierPart); } +/** Tests if the specified string is a valid identifer. */ +export function isIdentifier(str: string): bool { + var len = str.length; + if (!len) return false; + if (!isIdentifierStart(str.charCodeAt(0))) return false; + for (let i = 1; i < len; ++i) { + if (!isIdentifierPart(str.charCodeAt(i))) return false; + } + return true; +} + // storing as u16 to save memory const unicodeIdentifierStart: u16[] = [ 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, @@ -440,3 +451,98 @@ export function indent(sb: string[], level: i32): void { sb.push(indentX1); } } + +/** Escapes a string using the specified kind of quote. */ +export function escapeString(str: string, quote: CharCode): string { + var sb = new Array(); + var off = 0; + var i = 0; + for (let k = str.length; i < k;) { + switch (str.charCodeAt(i)) { + case CharCode.NULL: { + if (i > off) sb.push(str.substring(off, off = i + 1)); + sb.push("\\0"); + off = ++i; + break; + } + case CharCode.BACKSPACE: { + if (i > off) sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\b"); + break; + } + case CharCode.TAB: { + if (i > off) sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\t"); + break; + } + case CharCode.LINEFEED: { + if (i > off) sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\n"); + break; + } + case CharCode.VERTICALTAB: { + if (i > off) sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\v"); + break; + } + case CharCode.FORMFEED: { + if (i > off) sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\f"); + break; + } + case CharCode.CARRIAGERETURN: { + if (i > off) sb.push(str.substring(off, i)); + sb.push("\\r"); + off = ++i; + break; + } + case CharCode.DOUBLEQUOTE: { + if (quote == CharCode.DOUBLEQUOTE) { + if (i > off) sb.push(str.substring(off, i)); + sb.push("\\\""); + off = ++i; + } else { + ++i; + } + break; + } + case CharCode.SINGLEQUOTE: { + if (quote == CharCode.SINGLEQUOTE) { + if (i > off) sb.push(str.substring(off, i)); + sb.push("\\'"); + off = ++i; + } else { + ++i; + } + break; + } + case CharCode.BACKSLASH: { + if (i > off) sb.push(str.substring(off, i)); + sb.push("\\\\"); + off = ++i; + break; + } + case CharCode.BACKTICK: { + if (quote == CharCode.BACKTICK) { + if (i > off) sb.push(str.substring(off, i)); + sb.push("\\`"); + off = ++i; + } else { + ++i; + } + break; + } + default: { + ++i; + break; + } + } + } + if (i > off) sb.push(str.substring(off, i)); + return sb.join(""); +} diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 9bcdacdf12..320c67c4ea 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -28,7 +28,7 @@ function ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: b if (ASC_RUNTIME != Runtime.Incremental) { memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); } - if (newData !== oldData) { // oldData has been free'd + if (newData != oldData) { // oldData has been free'd store(array, newData, offsetof("buffer")); store(array, newData, offsetof("dataStart")); __link(array, changetype(newData), false); @@ -56,7 +56,7 @@ export class Array { private length_: i32; static isArray(value: U): bool { - return isReference() ? builtin_isArray(value) && value !== null : false; + return isReference() ? changetype(value) != 0 && builtin_isArray(value) : false; } static create(capacity: i32 = 0): Array { @@ -239,7 +239,7 @@ export class Array { concat(other: Array): Array { var thisLen = this.length_; - var otherLen = select(0, other.length_, other === null); + var otherLen = other.length_; var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__newArray(outLen, alignof(), idof>())); diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index 18479ade6c..84974efa25 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -31,7 +31,7 @@ export abstract class ArrayBufferView { static isView(value: T): bool { if (isNullable()) { - if (value === null) return false; + if (changetype(value) == 0) return false; } if (value instanceof Int8Array) return true; if (value instanceof Uint8Array) return true; diff --git a/std/assembly/bindings/Date.ts b/std/assembly/bindings/Date.ts deleted file mode 100644 index e6a6a9bb54..0000000000 --- a/std/assembly/bindings/Date.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function now(): f64; diff --git a/std/assembly/bindings/Math.ts b/std/assembly/bindings/Math.ts deleted file mode 100644 index 6e38741463..0000000000 --- a/std/assembly/bindings/Math.ts +++ /dev/null @@ -1,44 +0,0 @@ -export declare const E: f64; -export declare const LN2: f64; -export declare const LN10: f64; -export declare const LOG2E: f64; -export declare const LOG10E: f64; -export declare const PI: f64; -export declare const SQRT1_2: f64; -export declare const SQRT2: f64; - -export declare function abs(x: f64): f64; -export declare function acos(x: f64): f64; -export declare function acosh(x: f64): f64; -export declare function asin(x: f64): f64; -export declare function asinh(x: f64): f64; -export declare function atan(x: f64): f64; -export declare function atan2(y: f64, x: f64): f64; -export declare function atanh(x: f64): f64; -export declare function cbrt(x: f64): f64; -export declare function ceil(x: f64): f64; -export declare function clz32(x: f64): f64; -export declare function cos(x: f64): f64; -export declare function cosh(x: f64): f64; -export declare function exp(x: f64): f64; -export declare function expm1(x: f64): f64; -export declare function floor(x: f64): f64; -export declare function fround(x: f64): f32; -export declare function hypot(value1: f64, value2: f64): f64; // TODO: rest -export declare function imul(a: f64, b: f64): f64; -export declare function log(x: f64): f64; -export declare function log10(x: f64): f64; -export declare function log1p(x: f64): f64; -export declare function log2(x: f64): f64; -export declare function max(value1: f64, value2: f64): f64; // TODO: rest -export declare function min(value1: f64, value2: f64): f64; // TODO: rest -export declare function pow(base: f64, exponent: f64): f64; -export declare function random(): f64; -export declare function round(x: f64): f64; -export declare function sign(x: f64): f64; -export declare function sin(x: f64): f64; -export declare function sinh(x: f64): f64; -export declare function sqrt(x: f64): f64; -export declare function tan(x: f64): f64; -export declare function tanh(x: f64): f64; -export declare function trunc(x: f64): f64; diff --git a/std/assembly/bindings/Reflect.ts b/std/assembly/bindings/Reflect.ts deleted file mode 100644 index 411833bf23..0000000000 --- a/std/assembly/bindings/Reflect.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function get(target: externref, propertyKey: externref/* , receiver: externref */): externref; -export declare function has(target: externref, propertyKey: externref): bool; -export declare function set(target: externref, propertyKey: externref, value: externref/* , receiver: externref */): externref; -export declare function apply(target: externref, thisArgument: externref, argumentsList: externref): externref; diff --git a/std/assembly/bindings/console.ts b/std/assembly/bindings/console.ts deleted file mode 100644 index 8dea45426d..0000000000 --- a/std/assembly/bindings/console.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare function assert(value: externref): void; -export declare function clear(): void; -export declare function error(value: externref): void; -export declare function info(value: externref): void; -export declare function log(value: externref): void; -export declare function time(label: externref): externref; -export declare function timeEnd(label: externref): void; -export declare function timeLog(label: externref): void; -export declare function trace(): void; -export declare function warn(value: externref): void; diff --git a/std/assembly/bindings/dom.ts b/std/assembly/bindings/dom.ts new file mode 100644 index 0000000000..cd206110c4 --- /dev/null +++ b/std/assembly/bindings/dom.ts @@ -0,0 +1,162 @@ +@external("env", "globalThis") +export declare const globalThis: externref; + +export declare namespace Math { + @external("env", "Math.E") + export const E: f64; + @external("env", "Math.LN2") + export const LN2: f64; + @external("env", "Math.LN10") + export const LN10: f64; + @external("env", "Math.LOG2E") + export const LOG2E: f64; + @external("env", "Math.LOG10E") + export const LOG10E: f64; + @external("env", "Math.PI") + export const PI: f64; + @external("env", "Math.SQRT1_2") + export const SQRT1_2: f64; + @external("env", "Math.SQRT2") + export const SQRT2: f64; + @external("env", "Math.abs") + export function abs(x: f64): f64; + @external("env", "Math.acos") + export function acos(x: f64): f64; + @external("env", "Math.acosh") + export function acosh(x: f64): f64; + @external("env", "Math.asin") + export function asin(x: f64): f64; + @external("env", "Math.asinh") + export function asinh(x: f64): f64; + @external("env", "Math.atan") + export function atan(x: f64): f64; + @external("env", "Math.atan2") + export function atan2(y: f64, x: f64): f64; + @external("env", "Math.atanh") + export function atanh(x: f64): f64; + @external("env", "Math.cbrt") + export function cbrt(x: f64): f64; + @external("env", "Math.ceil") + export function ceil(x: f64): f64; + @external("env", "Math.clz32") + export function clz32(x: f64): f64; + @external("env", "Math.cos") + export function cos(x: f64): f64; + @external("env", "Math.cosh") + export function cosh(x: f64): f64; + @external("env", "Math.exp") + export function exp(x: f64): f64; + @external("env", "Math.expm1") + export function expm1(x: f64): f64; + @external("env", "Math.floor") + export function floor(x: f64): f64; + @external("env", "Math.fround") + export function fround(x: f64): f32; + @external("env", "Math.hypot") + export function hypot(value1: f64, value2: f64): f64; // TODO: rest + @external("env", "Math.imul") + export function imul(a: f64, b: f64): f64; + @external("env", "Math.log") + export function log(x: f64): f64; + @external("env", "Math.log10") + export function log10(x: f64): f64; + @external("env", "Math.log1p") + export function log1p(x: f64): f64; + @external("env", "Math.log2") + export function log2(x: f64): f64; + @external("env", "Math.max") + export function max(value1: f64, value2: f64): f64; // TODO: rest + @external("env", "Math.min") + export function min(value1: f64, value2: f64): f64; // TODO: rest + @external("env", "Math.pow") + export function pow(base: f64, exponent: f64): f64; + @external("env", "Math.random") + export function random(): f64; + @external("env", "Math.round") + export function round(x: f64): f64; + @external("env", "Math.sign") + export function sign(x: f64): f64; + @external("env", "Math.sin") + export function sin(x: f64): f64; + @external("env", "Math.sinh") + export function sinh(x: f64): f64; + @external("env", "Math.sqrt") + export function sqrt(x: f64): f64; + @external("env", "Math.tan") + export function tan(x: f64): f64; + @external("env", "Math.tanh") + export function tanh(x: f64): f64; + @external("env", "Math.trunc") + export function trunc(x: f64): f64; +} + +export declare namespace Reflect { + @external("env", "Reflect.get") + export function get(target: externref, propertyKey: string): externref; + @external("env", "Reflect.getWithReceiver") + @external.js("return Reflect.get(target, propertyKey, receiver);") + export function getWithReceiver(target: externref, propertyKey: string, receiver: externref): externref; + @external("env", "Reflect.has") + export function has(target: externref, propertyKey: string): bool; + @external("env", "Reflect.set") + export function set(target: externref, propertyKey: string, value: externref): externref; + @external("env", "Reflect.setWithReceiver") + @external.js("return Reflect.set(target, propertyKey, value, receiver);") + export function setWithReceiver(target: externref, propertyKey: string, value: externref , receiver: externref): externref; + @external("env", "Reflect.apply") + export function apply(target: externref, thisArgument: externref, argumentsList: externref): externref; +} + +export declare namespace String { + @external("env", "String.fromCodePoint") + export function fromCodePoint(codepoint: i32): externref; + @external("env", "String.fromCodePoints") + @external.js("return String.fromCodePoint(...codepoints);") + export function fromCodePoints(codepoints: i32[]): externref; +} + +export declare namespace Date { + @external("env", "Date.now") + export function now(): f64; +} + +export declare namespace console { + @external("env", "console.assert") + export function assert(condition: bool, message: string): void; + @external("env", "console.log") + export function log(text: string): void; + @external("env", "console.debug") + export function debug(text: string): void; + @external("env", "console.info") + export function info(text: string): void; + @external("env", "console.warn") + export function warn(text: string): void; + @external("env", "console.error") + export function error(text: string): void; + @external("env", "console.time") + export function time(label: string): void; + @external("env", "console.timeLog") + export function timeLog(label: string): void; + @external("env", "console.timeEnd") + export function timeEnd(label: string): void; +} + +export declare namespace document { + @external("env", "document.getElementById") + export function getElementById(id: string): externref; +} + +export declare namespace performance { + @external("env", "performance.now") + export function now(): f64; +} + +export namespace crypto { + export function getRandomValues(array: Uint8Array): void { + let values = getRandomValuesN(array.length); + array.set(values); + } + @external("env", "crypto.getRandomValuesN") + @external.js("let a = new Uint8Array(n); crypto.getRandomValues(a); return a;") + export declare function getRandomValuesN(n: u32): Uint8Array; +} diff --git a/std/assembly/bindings/node.ts b/std/assembly/bindings/node.ts new file mode 100644 index 0000000000..77a29f9eff --- /dev/null +++ b/std/assembly/bindings/node.ts @@ -0,0 +1,6 @@ +export declare namespace process { + @external("env", "process.argv") + export const argv: string[]; + @external("env", "process.exit") + export function exit(code: i32): void; +} diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 1fcf9f9877..18ec475c01 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2313,6 +2313,7 @@ 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( message?: string | null, fileName?: string | null, @@ -2322,6 +2323,7 @@ declare function abort( // @ts-ignore: decorator @external("env", "trace") +@external.js("console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n));") declare function trace( message: string, n?: i32, @@ -2334,6 +2336,7 @@ declare function trace( // @ts-ignore: decorator @external("env", "seed") +@external.js("return Date.now() * Math.random();") declare function seed(): f64; /* eslint-enable @typescript-eslint/no-unused-vars */ diff --git a/std/assembly/console.ts b/std/assembly/console.ts index f1d5f8de95..c65771a2df 100644 --- a/std/assembly/console.ts +++ b/std/assembly/console.ts @@ -2,86 +2,126 @@ import { process } from "./process"; +import { + console as binding +} from "./bindings/dom"; + // @ts-ignore: decorator @lazy var timers = new Map(); export namespace console { export function assert(condition: T, message: string = ""): void { - if (!condition) { - let stderr = process.stderr; - stderr.write("Assertion failed: "); - stderr.write(message); - stderr.write("\n"); + if (isDefined(ASC_WASI)) { + if (!condition) { + let stderr = process.stderr; + stderr.write("Assertion failed: "); + stderr.write(message); + stderr.write("\n"); + } + } else { + binding.assert(!!condition, message); } } export function log(message: string = ""): void { - var stdout = process.stdout; - stdout.write(message); - stdout.write("\n"); + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + stdout.write(message); + stdout.write("\n"); + } else { + binding.log(message); + } } export function debug(message: string = ""): void { - var stdout = process.stdout; - stdout.write("Debug: "); - stdout.write(message); - stdout.write("\n"); + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + stdout.write("Debug: "); + stdout.write(message); + stdout.write("\n"); + } else { + binding.debug(message); + } } export function info(message: string = ""): void { - var stdout = process.stdout; - stdout.write("Info: "); - stdout.write(message); - stdout.write("\n"); + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + stdout.write("Info: "); + stdout.write(message); + stdout.write("\n"); + } else { + binding.info(message); + } } export function warn(message: string = ""): void { - var stdout = process.stdout; - stdout.write("Warning: "); - stdout.write(message); - stdout.write("\n"); + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + stdout.write("Warning: "); + stdout.write(message); + stdout.write("\n"); + } else { + binding.warn(message); + } } export function error(message: string = ""): void { - var stdout = process.stdout; - stdout.write("Error: "); - stdout.write(message); - stdout.write("\n"); + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + stdout.write("Error: "); + stdout.write(message); + stdout.write("\n"); + } else { + binding.error(message); + } } export function time(label: string = "default"): void { - var stdout = process.stdout; - if (timers.has(label)) { - stdout.write("Warning: Label '"); - stdout.write(label); - stdout.write("' already exists for console.time()\n"); - return; + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + if (timers.has(label)) { + stdout.write("Warning: Label '"); + stdout.write(label); + stdout.write("' already exists for console.time()\n"); + return; + } + timers.set(label, process.hrtime()); + } else { + binding.time(label); } - timers.set(label, process.hrtime()); } export function timeLog(label: string = "default"): void { - var stdout = process.stdout; - if (!timers.has(label)) { - stdout.write("Warning: No such label '"); - stdout.write(label); - stdout.write("' for console.timeLog()\n"); - return; + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + if (!timers.has(label)) { + stdout.write("Warning: No such label '"); + stdout.write(label); + stdout.write("' for console.timeLog()\n"); + return; + } + timeLogImpl(label); + } else { + binding.timeLog(label); } - timeLogImpl(label); } export function timeEnd(label: string = "default"): void { - var stdout = process.stdout; - if (!timers.has(label)) { - stdout.write("Warning: No such label '"); - stdout.write(label); - stdout.write("' for console.timeEnd()\n"); - return; + if (isDefined(ASC_WASI)) { + let stdout = process.stdout; + if (!timers.has(label)) { + stdout.write("Warning: No such label '"); + stdout.write(label); + stdout.write("' for console.timeEnd()\n"); + return; + } + timeLogImpl(label); + timers.delete(label); + } else { + binding.timeEnd(label); } - timeLogImpl(label); - timers.delete(label); } } @@ -96,5 +136,4 @@ function timeLogImpl(label: string): void { stdout.write(": "); stdout.write(millisStr); stdout.write("ms\n"); - // __dispose(changetype(millisStr)); } diff --git a/std/assembly/crypto.ts b/std/assembly/crypto.ts index 5bf4c500c2..d49301bed4 100644 --- a/std/assembly/crypto.ts +++ b/std/assembly/crypto.ts @@ -3,9 +3,17 @@ import { random_get } from "bindings/wasi_snapshot_preview1"; +import { + crypto as crypto_binding +} from "bindings/dom"; + export namespace crypto { export function getRandomValues(array: Uint8Array): void { - var err = random_get(changetype(array.buffer) + array.byteOffset, array.byteLength); - if (err) throw new Error(errnoToString(err)); + if (isDefined(ASC_WASI)) { + let err = random_get(changetype(array.buffer) + array.byteOffset, array.byteLength); + if (err) throw new Error(errnoToString(err)); + } else { + crypto_binding.getRandomValues(array); + } } } diff --git a/std/assembly/date.ts b/std/assembly/date.ts index 8f219b7100..53d83c4476 100644 --- a/std/assembly/date.ts +++ b/std/assembly/date.ts @@ -1,5 +1,5 @@ import { E_INVALIDDATE } from "util/error"; -import { now as Date_now } from "./bindings/Date"; +import { Date as Date_binding } from "./bindings/dom"; // @ts-ignore: decorator @inline const @@ -33,7 +33,7 @@ export class Date { } @inline static now(): i64 { - return Date_now(); + return Date_binding.now(); } // It can parse only ISO 8601 inputs like YYYY-MM-DDTHH:MM:SS.000Z diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 14a808bea5..d51ebf5c91 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -92,6 +92,12 @@ declare const ASC_FEATURE_MULTI_VALUE: bool; declare const ASC_FEATURE_GC: bool; /** Whether the memory64 feature is enabled. */ declare const ASC_FEATURE_MEMORY64: bool; +/** Whether the function references feature is enabled. */ +declare const ASC_FEATURE_FUNCTION_REFERENCES: bool; +/** Whether the relaxed SIMD feature is enabled. */ +declare const ASC_FEATURE_RELAXED_SIMD: bool; +/** Whether the extended const expression feature is enabled. */ +declare const ASC_FEATURE_EXTENDED_CONST: bool; /** Major version of the compiler. */ declare const ASC_VERSION_MAJOR: i32; /** Minor version of the compiler. */ @@ -1369,6 +1375,10 @@ declare class _Float { toString(radix?: number): string; } +declare class Boolean { + toString(radix?: number): string; +} + /** Backing class of signed 8-bit integers. */ declare const I8: typeof _Integer; /** Backing class of signed 16-bit integers. */ @@ -1393,6 +1403,8 @@ declare const Usize: typeof _Integer; declare const F32: typeof _Float; /** Backing class of 64-bit floating-point values. */ declare const F64: typeof _Float; +/** Alias of F64. */ +declare const Number: typeof F64; // User-defined diagnostic macros @@ -1837,6 +1849,11 @@ declare class Object { static is(value1: T, value2: T): bool; } +declare namespace performance { + /** Gets a high resolution timestamp measured in milliseconds. */ + export function now(): f64; +} + declare class Date { /** Returns the UTC timestamp in milliseconds of the specified date. */ static UTC( @@ -1915,14 +1932,6 @@ declare class SyntaxError extends Error { } /** Class for indicating an error when a global URI handling function was used in a wrong way. */ declare class URIError extends Error { } -interface Boolean { - toString(radix?: number): string; -} - -interface Number { - toString(radix?: number): string; -} - interface Function { /** Function table index. */ readonly index: u32; @@ -2238,7 +2247,11 @@ declare function inline(...args: any[]): any; declare function unsafe(...args: any[]): any; /** Annotates an explicit external name of a function or global. */ -declare function external(...args: any[]): any; +declare function external(name: string): any; +declare function external(moduleName: string, name: string): any; +declare namespace external { + function js(code: string): any; +} /** Annotates a global for lazy compilation. */ declare function lazy(...args: any[]): any; diff --git a/std/assembly/map.ts b/std/assembly/map.ts index a90ce8b622..65f2f2d28c 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -96,7 +96,7 @@ export class Map { } has(key: K): bool { - return this.find(key, HASH(key)) !== null; + return this.find(key, HASH(key)) != null; } @operator("[]") diff --git a/std/assembly/math.ts b/std/assembly/math.ts index 7ed89ca755..c934e9dce7 100644 --- a/std/assembly/math.ts +++ b/std/assembly/math.ts @@ -1,4 +1,4 @@ -import * as JSMath from "./bindings/Math"; +import { Math as JSMath } from "./bindings/dom"; export { JSMath }; import { diff --git a/std/assembly/object.ts b/std/assembly/object.ts index 978260a116..c9543fe3df 100644 --- a/std/assembly/object.ts +++ b/std/assembly/object.ts @@ -2,7 +2,7 @@ export class Object { static is(value1: T, value2: T): bool { if (isFloat()) { if (value1 == value2) { - // 0 === -0, but they are not identical + // 0 == -0, but they are not identical if (sizeof() == 8) { // @ts-ignore: typecast return reinterpret(value1) == reinterpret(value2); @@ -11,7 +11,7 @@ export class Object { return reinterpret(value1) == reinterpret(value2); } } - // NaN !== NaN, but they are identical. + // NaN != NaN, but they are identical. // @ts-ignore: typecast return bool(i32(isNaN(value1)) & i32(isNaN(value2))); } diff --git a/std/assembly/performance.ts b/std/assembly/performance.ts new file mode 100644 index 0000000000..b53ddb5ae5 --- /dev/null +++ b/std/assembly/performance.ts @@ -0,0 +1,22 @@ +import { + clock_time_get, + clockid, + errnoToString, + tempbuf +} from "bindings/wasi"; + +import { + performance as performance_binding +} from "bindings/dom"; + +export namespace performance { + export function now(): f64 { + if (isDefined(ASC_WASI)) { + let err = clock_time_get(clockid.MONOTONIC, 1000, tempbuf); // TODO: more precision? + if (err) throw new Error(errnoToString(err)); + return load(tempbuf) / 1000000; + } else { + return performance_binding.now(); + } + } +} diff --git a/std/assembly/process.ts b/std/assembly/process.ts index 4b12f0d9c1..e728e44061 100644 --- a/std/assembly/process.ts +++ b/std/assembly/process.ts @@ -14,6 +14,15 @@ import { tempbuf } from "bindings/wasi"; +import { + Date as Date_binding, + performance as performance_binding +} from "bindings/dom"; + +import { + process as process_binding +} from "bindings/node"; + import { E_INDEXOUTOFRANGE } from "util/error"; @@ -36,7 +45,11 @@ export namespace process { @lazy export var exitCode = 0; export function exit(code: i32 = exitCode): void { - proc_exit(code); + if (isDefined(ASC_WASI)) { + proc_exit(code); + } else { + process_binding.exit(code); + } } // @ts-ignore: decorator @@ -47,63 +60,83 @@ export namespace process { @lazy export const stderr = changetype(2); export function time(): i64 { - var err = clock_time_get(clockid.REALTIME, 1000000, tempbuf); - if (err) throw new Error(errnoToString(err)); - return load(tempbuf) / 1000000; + if (isDefined(ASC_WASI)) { + let err = clock_time_get(clockid.REALTIME, 1000000, tempbuf); + if (err) throw new Error(errnoToString(err)); + return load(tempbuf) / 1000000; + } else { + return Date_binding.now(); + } } export function hrtime(): u64 { - var err = clock_time_get(clockid.MONOTONIC, 0, tempbuf); - if (err) throw new Error(errnoToString(err)); - return load(tempbuf); + if (isDefined(ASC_WASI)) { + let err = clock_time_get(clockid.MONOTONIC, 0, tempbuf); + if (err) throw new Error(errnoToString(err)); + return load(tempbuf); + } else { + let now = performance_binding.now(); + let millis = now; + let fraction = now - millis; + return millis * 1000000 + (fraction * 1000000); + } } } function lazyArgv(): string[] { - var err = args_sizes_get(tempbuf, tempbuf + sizeof()); - if (err) throw new Error(errnoToString(err)); - var count = load(tempbuf); - var ptrsSize = count * sizeof(); - var dataSize = load(tempbuf, sizeof()); - var bufSize = ptrsSize + dataSize; - var buf = __alloc(bufSize); - err = args_get(buf, buf + ptrsSize); - if (err) throw new Error(errnoToString(err)); - var count32 = count; - var argv = new Array(count32); - for (let i = 0; i < count32; ++i) { - let ptr = load(buf + i * sizeof()); - let str = String.UTF8.decodeUnsafe(ptr, ptr + bufSize - buf, true); - argv[i] = str; + if (isDefined(ASC_WASI)) { + let err = args_sizes_get(tempbuf, tempbuf + sizeof()); + if (err) throw new Error(errnoToString(err)); + let count = load(tempbuf); + let ptrsSize = count * sizeof(); + let dataSize = load(tempbuf, sizeof()); + let bufSize = ptrsSize + dataSize; + let buf = __alloc(bufSize); + err = args_get(buf, buf + ptrsSize); + if (err) throw new Error(errnoToString(err)); + let count32 = count; + let argv = new Array(count32); + for (let i = 0; i < count32; ++i) { + let ptr = load(buf + i * sizeof()); + let str = String.UTF8.decodeUnsafe(ptr, ptr + bufSize - buf, true); + argv[i] = str; + } + __free(buf); + return argv; + } else { + return process_binding.argv; } - __free(buf); - return argv; } function lazyEnv(): Map { - var err = environ_sizes_get(tempbuf, tempbuf + 4); - if (err) throw new Error(errnoToString(err)); - var count = load(tempbuf); - var ptrsSize = count * sizeof(); - var dataSize = load(tempbuf, sizeof()); - var bufSize = ptrsSize + dataSize; - var buf = __alloc(bufSize); - err = environ_get(buf, buf + ptrsSize); - if (err) throw new Error(errnoToString(err)); - var env = new Map(); - for (let i: usize = 0; i < count; ++i) { - let ptr = load(buf + i * sizeof()); - let str = String.UTF8.decodeUnsafe(ptr, ptr + bufSize - buf, true); - let pos = str.indexOf("="); - if (~pos) { - env.set(str.substring(0, pos), str.substring(pos + 1)); - // __dispose(changetype(str)); - } else { - env.set(str, ""); + if (isDefined(ASC_WASI)) { + let err = environ_sizes_get(tempbuf, tempbuf + 4); + if (err) throw new Error(errnoToString(err)); + let count = load(tempbuf); + let ptrsSize = count * sizeof(); + let dataSize = load(tempbuf, sizeof()); + let bufSize = ptrsSize + dataSize; + let buf = __alloc(bufSize); + err = environ_get(buf, buf + ptrsSize); + if (err) throw new Error(errnoToString(err)); + let env = new Map(); + for (let i: usize = 0; i < count; ++i) { + let ptr = load(buf + i * sizeof()); + let str = String.UTF8.decodeUnsafe(ptr, ptr + bufSize - buf, true); + let pos = str.indexOf("="); + if (~pos) { + env.set(str.substring(0, pos), str.substring(pos + 1)); + // __dispose(changetype(str)); + } else { + env.set(str, ""); + } } + __free(buf); + return env; + } else { + // TODO: What about Node? + return new Map(); } - __free(buf); - return env; } @unmanaged diff --git a/std/assembly/set.ts b/std/assembly/set.ts index f8396a5216..43063da90c 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -94,7 +94,7 @@ export class Set { @operator("[]") has(key: T): bool { - return this.find(key, HASH(key)) !== null; + return this.find(key, HASH(key)) != null; } add(key: T): this { diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 0b36c644eb..c8ca417a25 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -27,7 +27,13 @@ export const enum Feature { /** Garbage collection. */ GC = 1 << 10, // see: https://github.com/WebAssembly/gc /** Memory64. */ - MEMORY64 = 1 << 11 // see: https://github.com/WebAssembly/memory64 + MEMORY64 = 1 << 11, // see: https://github.com/WebAssembly/memory64 + /** Function references. */ + FUNCTION_REFERENCES = 1 << 12, // see: https://github.com/WebAssembly/function-references + /** Relaxed SIMD. */ + RELAXED_SIMD = 1 << 13, // see: https://github.com/WebAssembly/relaxed-simd + /** Extended const expressions. */ + EXTENDED_CONST = 1 << 14 // see: https://github.com/WebAssembly/extended-const } /** Gets the name of the specified feature one would specify on the command line. */ diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index f242c7147f..4552ecab0c 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -39,7 +39,7 @@ export class StaticArray { static concat(source: StaticArray, other: StaticArray): StaticArray { var sourceLen = source.length; - var otherLen = select(0, other.length, other === null); + var otherLen = other.length; var outLen = sourceLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__new(outLen << alignof(), idof>())); @@ -228,7 +228,7 @@ export class StaticArray { concat(other: Array): Array { var thisLen = this.length; - var otherLen = select(0, other.length, other === null); + var otherLen = other.length; var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__newArray(outLen, alignof(), idof>())); diff --git a/std/assembly/string.ts b/std/assembly/string.ts index bc88594634..748f59ed65 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -107,17 +107,17 @@ import { Array } from "./array"; } @operator("==") private static __eq(left: String | null, right: String | null): bool { - if (left === right) return true; - if (left === null || right === null) return false; - var leftLength = left.length; - if (leftLength != right.length) return false; + if (changetype(left) == changetype(right)) return true; + if (changetype(left) == 0 || changetype(right) == 0) return false; + var leftLength = changetype(left).length; + if (leftLength != changetype(right).length) return false; // @ts-ignore: string <-> String return !compareImpl(left, 0, right, 0, leftLength); } @operator.prefix("!") private static __not(str: String | null): bool { - return str === null || !str.length; + return changetype(str) == 0 || !changetype(str).length; } @operator("!=") @@ -126,7 +126,7 @@ import { Array } from "./array"; } @operator(">") private static __gt(left: String, right: String): bool { - if (left === right) return false; + if (changetype(left) == changetype(right)) return false; var leftLength = left.length; if (!leftLength) return false; var rightLength = right.length; @@ -141,7 +141,7 @@ import { Array } from "./array"; } @operator("<") private static __lt(left: String, right: String): bool { - if (left === right) return false; + if (changetype(left) == changetype(right)) return false; var rightLength = right.length; if (!rightLength) return false; var leftLength = left.length; @@ -187,7 +187,7 @@ import { Array } from "./array"; // TODO: implement full locale comparison with locales and Collator options localeCompare(other: String): i32 { - if (other === this) return 0; // compare pointers + if (changetype(other) == changetype(this)) return 0; var len: isize = this.length; var otherLen: isize = other.length; if (otherLen != len) return select(1, -1, len > otherLen); @@ -468,9 +468,9 @@ import { Array } from "./array"; split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { if (!limit) return changetype(__newArray(0, alignof(), idof>())); - if (separator === null) return [this]; + if (changetype(separator) == 0) return [ this ]; var length: isize = this.length; - var sepLen = separator.length; + var sepLen = changetype(separator).length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { if (!length) return changetype(__newArray(0, alignof(), idof>())); @@ -494,7 +494,7 @@ import { Array } from "./array"; } var result = changetype(__newArray(0, alignof(), idof>())); var end = 0, start = 0, i = 0; - while (~(end = this.indexOf(separator, start))) { + while (~(end = this.indexOf(changetype(separator), start))) { let len = end - start; if (len > 0) { let out = changetype(__new(len << 1, idof())); diff --git a/std/assembly/symbol.ts b/std/assembly/symbol.ts index 9fd06cd707..d5d06253b5 100644 --- a/std/assembly/symbol.ts +++ b/std/assembly/symbol.ts @@ -74,7 +74,7 @@ import { Map } from "./map"; } static keyFor(sym: symbol): string | null { - return idToString !== null && idToString.has(changetype(sym)) + return idToString != null && idToString.has(changetype(sym)) ? idToString.get(changetype(sym)) : null; } @@ -95,7 +95,7 @@ import { Map } from "./map"; case 10: { str = "toStringTag"; break; } case 11: { str = "unscopables"; break; } default: { - if (idToString !== null && idToString.has(id)) str = idToString.get(id); + if (idToString != null && idToString.has(id)) str = idToString.get(id); break; } } diff --git a/std/assembly/util/hash.ts b/std/assembly/util/hash.ts index c902598c7b..d70ada21a4 100644 --- a/std/assembly/util/hash.ts +++ b/std/assembly/util/hash.ts @@ -69,7 +69,7 @@ function mix(h: u32, key: u32): u32 { // @ts-ignore: decorator @inline function hashStr(key: string): u32 { - if (key === null) return XXH32_SEED; + if (changetype(key) == 0) return XXH32_SEED; var h: u32 = key.length << 1; var len: usize = h; diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index 700165b80e..f9d93b640f 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -144,7 +144,7 @@ export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/s // @ts-ignore: decorator @inline export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c - if (dest === src) return; + if (dest == src) return; if (ASC_SHRINK_LEVEL < 1) { if (src - dest - n <= -(n << 1)) { memcpy(dest, src, n); diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index df2624f8da..7346f1b00f 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -44,7 +44,7 @@ export function COMPARATOR(): Comparator { } } else if (isString()) { return (a, b) => { - if (a === b || a === null || b === null) return 0; + if (changetype(a) == changetype(b) || changetype(a) == 0 || changetype(b) == 0) return 0; var alen = changetype(a).length; var blen = changetype(b).length; if (!(alen | blen)) return 0; diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 0bea1ec612..ae7e1e267c 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -981,15 +981,14 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string var value: string; for (let i = 0; i < length; ++i) { value = load(dataStart + (i << alignof())); - // @ts-ignore: type - if (value !== null) estLen += value.length; + if (changetype(value) != 0) estLen += value.length; } var offset = 0; var sepLen = separator.length; var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof())); for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); - if (value !== null) { + if (changetype(value) != 0) { let valueLen = value.length; memory.copy( changetype(result) + (offset << 1), @@ -1008,7 +1007,7 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } } value = load(dataStart + (lastIndex << alignof())); - if (value !== null) { + if (changetype(value) != 0) { memory.copy( changetype(result) + (offset << 1), changetype(value), @@ -1025,19 +1024,19 @@ export function joinReferenceArray(dataStart: usize, length: i32, separator: if (!lastIndex) { value = load(dataStart); // @ts-ignore: type - return value !== null ? value.toString() : ""; + return value != null ? value.toString() : ""; } var result = ""; var sepLen = separator.length; for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value != null) result += value.toString(); if (sepLen) result += separator; } value = load(dataStart + (lastIndex << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value != null) result += value.toString(); return result; } diff --git a/std/assembly/wasi/index.ts b/std/assembly/wasi/index.ts index e72f0016f5..d84fedbef5 100644 --- a/std/assembly/wasi/index.ts +++ b/std/assembly/wasi/index.ts @@ -31,11 +31,11 @@ function abort( // eslint-disable-line @typescript-eslint/no-unused-vars changetype(iovPtr).buf = bufPtr; var ptr = bufPtr; store(ptr, 0x203A74726F6261); ptr += 7; // 'abort: ' - if (message !== null) { + if (message != null) { ptr += String.UTF8.encodeUnsafe(changetype(message), message.length, ptr); } store(ptr, 0x206E6920); ptr += 4; // ' in ' - if (fileName !== null) { + if (fileName != null) { ptr += String.UTF8.encodeUnsafe(changetype(fileName), fileName.length, ptr); } store(ptr++, 0x28); // ( diff --git a/std/portable/index.js b/std/portable/index.js index 271d0aa778..347b8331c8 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -261,8 +261,8 @@ if (typeof globalScope.ASC_TARGET === "undefined") { } function defaultComparator(a, b) { - if (a === b) { - if (a !== 0) return 0; + if (a == b) { + if (a != 0) return 0; a = 1 / a, b = 1 / b; } else { var nanA = a != a, nanB = b != b; diff --git a/tests/README.md b/tests/README.md index 2dc6fd42f9..3bbaef5656 100644 --- a/tests/README.md +++ b/tests/README.md @@ -81,7 +81,7 @@ and post instantiation of the module, with the following export signatures: * **preInstantiate**(imports: `object`, exports: `object`): `void`
Can be used to populate imports with functionality required by the test. Note that `exports` is an empty object that will be populated with the actual exports after instantiation. Useful if an import - needs to call an export (usually in combination with the `--explicitStart` flag). + needs to call an export (usually in combination with the `--exportStart` flag). * **postInstantiate**(instance: `WebAssembly.Instance`): `void`
Can be used to execute custom test logic once the module is ready. Throwing an error will fail the @@ -119,9 +119,8 @@ Tests for experimental features (usually enabled via the `--enable` CLI flag) ar Other ----- -Tests in other directories are not run automatically and do not need to be updated. +Tests in other directories are not run automatically and do not need to be updated. There are also: * [tests/allocators](./allocators) contains the memory allocator test suite -* [tests/binaryen](./binaryen) contains various triggers for earlier Binaryen issues +* [tests/browser](./browser.js) checks typical browser usage via asc's API * [tests/tokenizer](./tokenizer.js) is a visual test for the tokenizer tokenizing itself -* [tests/util-path](./util-path.js) is a sanity test for the path utility diff --git a/tests/allocators/default/assembly/index.ts b/tests/allocators/default/assembly/index.ts index ac574167a2..636e878e43 100644 --- a/tests/allocators/default/assembly/index.ts +++ b/tests/allocators/default/assembly/index.ts @@ -1 +1,11 @@ -export { heap }; +export function heap_alloc(size: usize): usize { + return heap.alloc(size); +} + +export function heap_free(ptr: usize): void { + heap.free(ptr); +} + +export function memory_fill(ptr: usize, value: u8, count: usize): void { + memory.fill(ptr, value, count); +} diff --git a/tests/allocators/default/debug.wat b/tests/allocators/default/debug.wat new file mode 100644 index 0000000000..661a53ec73 --- /dev/null +++ b/tests/allocators/default/debug.wat @@ -0,0 +1,1476 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/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 16524)) + (global $~lib/memory/__heap_base i32 (i32.const 16524)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "heap_alloc" (func $assembly/index/heap_alloc)) + (export "heap_free" (func $assembly/index/heap_free)) + (export "memory_fill" (func $assembly/index/memory_fill)) + (export "memory" (memory $0)) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 96 + i32.const 32 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/tlsf/__alloc + ) + (func $assembly/index/heap_alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/memory/heap.alloc + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/memory/heap.free (param $0 i32) + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $assembly/index/heap_free (param $0 i32) + local.get $0 + call $~lib/memory/heap.free + ) + (func $assembly/index/memory_fill (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + local.get $2 + memory.fill + ) +) diff --git a/tests/allocators/default/package.json b/tests/allocators/default/package.json index 8519148c6f..b422a3e645 100644 --- a/tests/allocators/default/package.json +++ b/tests/allocators/default/package.json @@ -1,8 +1,9 @@ { "private": true, + "type": "module", "scripts": { - "build": "npm run build:untouched && npm run build:optimized", - "build:untouched": "node ../../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --sourceMap --measure --debug", - "build:optimized": "node ../../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --sourceMap --measure --noAssert --optimize" + "build": "npm run build:debug && npm run build:release", + "build:debug": "node ../../../bin/asc assembly/index.ts -t debug.wat -o debug.wasm --sourceMap --stats --debug", + "build:release": "node ../../../bin/asc assembly/index.ts -t release.wat -o release.wasm --sourceMap --stats --noAssert --optimize" } } diff --git a/tests/allocators/default/release.wat b/tests/allocators/default/release.wat new file mode 100644 index 0000000000..65abb72055 --- /dev/null +++ b/tests/allocators/default/release.wat @@ -0,0 +1,771 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") + (data (i32.const 1112) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (export "heap_alloc" (func $assembly/index/heap_alloc)) + (export "heap_free" (func $assembly/index/heap_free)) + (export "memory_fill" (func $assembly/index/memory_fill)) + (export "memory" (memory $0)) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $3 + i32.const 1073741820 + local.get $3 + i32.const 1073741820 + i32.lt_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.set $3 + local.get $1 + i32.load offset=8 + local.set $4 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=8 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=4 + end + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + local.tee $3 + 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.set $6 + 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 $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + local.get $2 + i32.const -16 + i32.and + local.get $0 + i32.load offset=1568 + local.tee $2 + i32.const 0 + local.get $2 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $1 + i32.const 16 + i32.sub + i32.eq + select + if + local.get $2 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 17552 + i32.const 0 + i32.store + i32.const 19120 + 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 17552 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 17552 + 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 17552 + i32.const 19124 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17552 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.set $1 + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $0 + local.get $1 + i32.ctz + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.ctz + local.get $0 + 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 $assembly/index/heap_alloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $0 + i32.const 12 + i32.le_u + select + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.set $0 + end + local.get $0 + i32.load + drop + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + local.get $3 + i32.or + i32.store + local.get $3 + local.get $0 + i32.const 4 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.add + ) + (func $assembly/index/heap_free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 17548 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + 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 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/insertBlock + end + ) + (func $assembly/index/memory_fill (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + local.get $2 + memory.fill + ) +) diff --git a/tests/allocators/default/untouched.wat b/tests/allocators/default/untouched.wat deleted file mode 100644 index b89363a127..0000000000 --- a/tests/allocators/default/untouched.wat +++ /dev/null @@ -1,2904 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 252)) - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 - local.get $1 - i32.load offset=8 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - call $~lib/rt/tlsf/Block#set:next - end - local.get $7 - if - local.get $7 - local.get $6 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 200 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 202 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 223 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 12 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 238 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 239 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 255 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 380 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 387 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 400 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u - if - i32.const 96 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 333 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 360 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/tlsf/__alloc - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/memory/__heap_base - i32.ge_u - if - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $5 - local.get $3 - local.get $5 - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.load - local.set $8 - local.get $8 - i32.const 1 - i32.and - if - local.get $5 - i32.const 4 - i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $6 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/rt/tlsf/moveBlock - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if (result i32) - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/moveBlock - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - end - i32.const 4 - i32.add - ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__realloc - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/memory/heap.free (param $0 i32) - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $~lib/memory/heap.reset - i32.const 0 - drop - i32.const 160 - i32.const 224 - i32.const 101 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) -) diff --git a/tests/allocators/forever.js b/tests/allocators/forever.js index 60f6363b5b..fb68cd76bb 100644 --- a/tests/allocators/forever.js +++ b/tests/allocators/forever.js @@ -1,4 +1,4 @@ -var child_process = require("child_process"); +import child_process from "child_process"; // restarts the test forever, that is, until an issue is detected diff --git a/tests/allocators/index.js b/tests/allocators/index.js index 013d8d6dbc..2a4cdc6678 100644 --- a/tests/allocators/index.js +++ b/tests/allocators/index.js @@ -1,10 +1,16 @@ -const fs = require("fs"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import runner from "./runner.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); + const COMMON_MAX = 1 << 30; -function test(file) { +async function test(file) { console.log("Testing '" + file + "' ...\n"); - const exports = new WebAssembly.Instance(new WebAssembly.Module(fs.readFileSync(__dirname + "/" + file)), { + const { instance: { exports } } = await WebAssembly.instantiate(fs.readFileSync(dirname + "/" + file), { env: { abort(msg, file, line, column) { throw Error("Assertion failed: " + (msg ? "'" + getString(msg) + "' " : "") + "at " + getString(file) + ":" + line + ":" + column); @@ -13,7 +19,7 @@ function test(file) { logi(i) { console.log(i); }, trace(...args) { console.log("trace", args); } } - }).exports; + }); function getString(ptr) { if (!ptr) return "null"; @@ -24,7 +30,7 @@ function test(file) { return String.fromCharCode.apply(String, U16.subarray(offset, offset + length)); } - require("./runner")(exports, 20, 20000); + runner(exports, 20, 20000); console.log("mem final: " + exports.memory.buffer.byteLength); console.log(); @@ -44,8 +50,8 @@ function test(file) { } if (process.argv.length > 2) { - test(process.argv[2] + "/untouched.wasm"); - test(process.argv[2] + "/optimized.wasm"); + await test(process.argv[2] + "/debug.wasm"); + await test(process.argv[2] + "/release.wasm"); } else { console.error("Usage: npm test "); process.exit(1); diff --git a/tests/allocators/package.json b/tests/allocators/package.json index fc58f3778c..d2e0ff1c72 100644 --- a/tests/allocators/package.json +++ b/tests/allocators/package.json @@ -1,4 +1,5 @@ { + "type": "module", "private": true, "scripts": { "test": "node ./index", diff --git a/tests/allocators/runner.js b/tests/allocators/runner.js index 96fed174d8..1706e7a752 100644 --- a/tests/allocators/runner.js +++ b/tests/allocators/runner.js @@ -1,8 +1,8 @@ -function runner(exports, runs, allocs) { - const alloc = exports["heap.alloc"]; - const free = exports["heap.free"]; - const reset = exports["heap.reset"]; - const fill = exports["memory.fill"]; +export default function runner(exports, runs, allocs) { + const alloc = exports["heap_alloc"]; + const free = exports["heap_free"]; + const reset = exports["heap_reset"]; + const fill = exports["memory_fill"]; const ptrs = []; diff --git a/tests/allocators/stub/assembly/index.ts b/tests/allocators/stub/assembly/index.ts index ac574167a2..c1306faa64 100644 --- a/tests/allocators/stub/assembly/index.ts +++ b/tests/allocators/stub/assembly/index.ts @@ -1 +1,15 @@ -export { heap }; +export function heap_alloc(size: usize): usize { + return heap.alloc(size); +} + +export function heap_free(ptr: usize): void { + heap.free(ptr); +} + +export function heap_reset(): void { + heap.reset(); // stub only +} + +export function memory_fill(ptr: usize, value: u8, count: usize): void { + memory.fill(ptr, value, count); +} diff --git a/tests/allocators/stub/debug.wat b/tests/allocators/stub/debug.wat new file mode 100644 index 0000000000..456789f5c5 --- /dev/null +++ b/tests/allocators/stub/debug.wat @@ -0,0 +1,220 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/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 140)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "heap_alloc" (func $assembly/index/heap_alloc)) + (export "heap_free" (func $assembly/index/heap_free)) + (export "heap_reset" (func $assembly/index/heap_reset)) + (export "memory_fill" (func $assembly/index/memory_fill)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + 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 $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.set $1 + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.set $2 + local.get $0 + local.set $3 + local.get $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 + local.set $4 + local.get $2 + local.get $4 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + local.get $4 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + ) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__alloc + ) + (func $assembly/index/heap_alloc (param $0 i32) (result i32) + local.get $0 + call $~lib/memory/heap.alloc + ) + (func $~lib/rt/stub/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/memory/heap.free (param $0 i32) + local.get $0 + call $~lib/rt/stub/__free + ) + (func $assembly/index/heap_free (param $0 i32) + local.get $0 + call $~lib/memory/heap.free + ) + (func $~lib/rt/stub/__reset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) + (func $~lib/memory/heap.reset + i32.const 1 + drop + call $~lib/rt/stub/__reset + ) + (func $assembly/index/heap_reset + call $~lib/memory/heap.reset + ) + (func $assembly/index/memory_fill (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + local.get $2 + memory.fill + ) + (func $~start + 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 + ) +) diff --git a/tests/allocators/stub/optimized.wat b/tests/allocators/stub/optimized.wat deleted file mode 100644 index 43ff393683..0000000000 --- a/tests/allocators/stub/optimized.wat +++ /dev/null @@ -1,367 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $2 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $0 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $0 - i32.store - local.get $2 - ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__alloc - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $4 - i32.load - local.tee $3 - i32.add - i32.eq - local.set $5 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $5 - if - local.get $1 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $4 - local.get $2 - i32.store - else - local.get $2 - local.get $3 - i32.const 1 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - local.set $0 - end - else - local.get $5 - if - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $4 - local.get $2 - i32.store - end - end - local.get $0 - ) - (func $~lib/memory/heap.free (param $0 i32) - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/memory/heap.reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~start - i32.const 1036 - global.set $~lib/rt/stub/startOffset - i32.const 1036 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/allocators/stub/package.json b/tests/allocators/stub/package.json index 395f939013..e2f1636974 100644 --- a/tests/allocators/stub/package.json +++ b/tests/allocators/stub/package.json @@ -1,8 +1,9 @@ { "private": true, + "type": "module", "scripts": { - "build": "npm run build:untouched && npm run build:optimized", - "build:untouched": "node ../../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --runtime stub --sourceMap --measure", - "build:optimized": "node ../../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime stub --sourceMap --measure --noAssert --optimize" + "build": "npm run build:debug && npm run build:release", + "build:debug": "node ../../../bin/asc assembly/index.ts -t debug.wat -o debug.wasm --runtime stub --sourceMap --stats", + "build:release": "node ../../../bin/asc assembly/index.ts -t release.wat -o release.wasm --runtime stub --sourceMap --stats --noAssert --optimize" } } diff --git a/tests/allocators/stub/release.wat b/tests/allocators/stub/release.wat new file mode 100644 index 0000000000..2154376f9d --- /dev/null +++ b/tests/allocators/stub/release.wat @@ -0,0 +1,130 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") + (data (i32.const 1112) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (export "heap_alloc" (func $assembly/index/heap_alloc)) + (export "heap_free" (func $assembly/index/heap_free)) + (export "heap_reset" (func $assembly/index/heap_reset)) + (export "memory_fill" (func $assembly/index/memory_fill)) + (export "memory" (memory $0)) + (start $~start) + (func $assembly/index/heap_alloc (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 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $0 + i32.add + local.tee $3 + memory.size + local.tee $4 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $5 + i32.gt_u + if + local.get $4 + local.get $3 + local.get $5 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $5 + local.get $4 + 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 + end + local.get $3 + global.set $~lib/rt/stub/offset + local.get $1 + local.get $0 + i32.store + local.get $2 + ) + (func $assembly/index/heap_free (param $0 i32) + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset + end + ) + (func $assembly/index/heap_reset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) + (func $assembly/index/memory_fill (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + local.get $2 + memory.fill + ) + (func $~start + i32.const 1164 + global.set $~lib/rt/stub/startOffset + i32.const 1164 + global.set $~lib/rt/stub/offset + ) +) diff --git a/tests/allocators/stub/untouched.wat b/tests/allocators/stub/untouched.wat deleted file mode 100644 index 8932e17c1f..0000000000 --- a/tests/allocators/stub/untouched.wat +++ /dev/null @@ -1,1566 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 76)) - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - 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 $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $2 - local.get $0 - local.set $3 - local.get $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 - local.set $4 - local.get $2 - local.get $4 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $4 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__alloc - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset - i32.eq - local.set $4 - local.get $1 - local.set $5 - local.get $5 - 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 $6 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $4 - if - local.get $1 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $6 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - local.get $6 - call $~lib/rt/common/BLOCK#set:mmInfo - else - local.get $6 - local.tee $5 - local.get $3 - i32.const 1 - i32.shl - local.tee $7 - local.get $5 - local.get $7 - i32.gt_u - select - call $~lib/rt/stub/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $5 - local.tee $0 - i32.const 4 - i32.sub - local.set $2 - end - else - local.get $4 - if - local.get $0 - local.get $6 - i32.add - global.set $~lib/rt/stub/offset - local.get $2 - local.get $6 - call $~lib/rt/common/BLOCK#set:mmInfo - end - end - local.get $0 - ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/stub/__realloc - ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $~lib/memory/heap.free (param $0 i32) - local.get $0 - call $~lib/rt/stub/__free - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/memory/heap.reset - i32.const 1 - drop - call $~lib/rt/stub/__reset - ) - (func $~start - 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 - ) -) diff --git a/tests/asconfig/complicated/asconfig.json b/tests/asconfig/complicated/asconfig.json index 0a8e106ebc..991cbf8a7a 100644 --- a/tests/asconfig/complicated/asconfig.json +++ b/tests/asconfig/complicated/asconfig.json @@ -4,8 +4,8 @@ "optimize": true, "exportRuntime": true, "initialMemory": 30, - "explicitStart": true, - "measure": true, + "exportStart": "_start", + "stats": true, "pedantic": true, "sourceMap": true } diff --git a/tests/asconfig/complicated/package.json b/tests/asconfig/complicated/package.json index f98424bae9..c9b011f82c 100644 --- a/tests/asconfig/complicated/package.json +++ b/tests/asconfig/complicated/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js" + "test": "node --enable-source-maps ../index.js" } } diff --git a/tests/asconfig/cyclical/package.json b/tests/asconfig/cyclical/package.json index f98424bae9..c9b011f82c 100644 --- a/tests/asconfig/cyclical/package.json +++ b/tests/asconfig/cyclical/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js" + "test": "node --enable-source-maps ../index.js" } } diff --git a/tests/asconfig/entry-points/nested/package.json b/tests/asconfig/entry-points/nested/package.json index 7603e9ad4d..f55a807fa6 100644 --- a/tests/asconfig/entry-points/nested/package.json +++ b/tests/asconfig/entry-points/nested/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../../index.js" + "test": "node --enable-source-maps ../../index.js" } } diff --git a/tests/asconfig/entry-points/node-resolution/package.json b/tests/asconfig/entry-points/node-resolution/package.json index 7603e9ad4d..f55a807fa6 100644 --- a/tests/asconfig/entry-points/node-resolution/package.json +++ b/tests/asconfig/entry-points/node-resolution/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../../index.js" + "test": "node --enable-source-maps ../../index.js" } } diff --git a/tests/asconfig/entry-points/package.json b/tests/asconfig/entry-points/package.json index e92aaac524..0f259db56e 100644 --- a/tests/asconfig/entry-points/package.json +++ b/tests/asconfig/entry-points/package.json @@ -1,7 +1,7 @@ { "private": true, "scripts": { - "test": "node ../index.js && npm run test:nested && npm run test:node", + "test": "node --enable-source-maps ../index.js && npm run test:nested && npm run test:node", "test:nested": "cd nested && npm run test", "test:node": "cd node-resolution && npm run test" } diff --git a/tests/asconfig/extends/package.json b/tests/asconfig/extends/package.json index fdbb9ed043..a0aa5275c5 100644 --- a/tests/asconfig/extends/package.json +++ b/tests/asconfig/extends/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js --showConfig && node ../index.js" + "test": "node --enable-source-maps ../index.js --showConfig && node ../index.js" } } diff --git a/tests/asconfig/index.js b/tests/asconfig/index.js index b323e34b96..e81d18dfa1 100644 --- a/tests/asconfig/index.js +++ b/tests/asconfig/index.js @@ -1,79 +1,75 @@ -const asc = require("../../cli/asc"); -const loader = require("../../lib/loader/umd"); +import path from "path"; +import fs from "fs"; +import { createRequire } from "module"; +import asc from "../../dist/asc.js"; +import loader from "../../lib/loader/index.js"; + +const require = createRequire(import.meta.url); const args = process.argv.slice(2); -const path = require('path'); -const fs = require("fs"); -/** @type {string} */ -let stderr; /** @type {Uint8Array} */ let binary; -asc.main(["assembly/index.ts", "--outFile", "output.wasm", "--explicitStart", ...args], { + +const { error, stderr } = await asc.main(["assembly/index.ts", "--outFile", "output.wasm", "--exportStart", "_start", ...args], { writeFile(name, contents) { if (name === "output.wasm") { binary = contents; } else if (name !== "output.wasm.map") { throw Error("Unexpected output file: " + name); } - }, - stderr: { - write(s) { - stderr = s; - } } +}); -}, (err) => { - if (err) { - console.error(err); - console.error(stderr); - process.exit(1); - } +if (error) { + console.error(error); + console.error(stderr.toString()); + process.exit(1); +} - const jsonPath = path.join(process.cwd(), "expected.json"); - if (fs.existsSync(jsonPath) && stderr) { - const actualRes = JSON.parse(stderr); - const actual = actualRes.options; - const expected = require(jsonPath).options; - let errored = false; - for (let name of Object.getOwnPropertyNames(expected)) { - if (actual[name] !== expected[name]) { - // If object check just first level - if (typeof actual[name] === 'object' && typeof expected[name] === 'object') { - let error = false; - for (let field of Object.getOwnPropertyNames(actual[name])) { - if (actual[name][field] !== expected[name][field]) { - error = true; - break; - } - } - if (!error) { - continue; +const jsonPath = path.join(process.cwd(), "expected.json"); +const stderrString = stderr.toString(); +if (fs.existsSync(jsonPath) && stderrString) { + const actualRes = JSON.parse(stderrString); + const actual = actualRes.options; + const expected = require(jsonPath).options; + let errored = false; + for (let name of Object.getOwnPropertyNames(expected)) { + if (actual[name] !== expected[name]) { + // If object check just first level + if (typeof actual[name] === 'object' && typeof expected[name] === 'object') { + let error = false; + for (let field of Object.getOwnPropertyNames(actual[name])) { + if (actual[name][field] !== expected[name][field]) { + error = true; + break; } } - console.error(name + ": " + actual[name] + " expected " + expected[name]); - errored = true; + if (!error) { + continue; + } } + console.error(name + ": " + actual[name] + " expected " + expected[name]); + errored = true; } - if (errored) { - process.exit(1); - } - process.exit(0); } - - - if (!binary) { - console.error("No binary was generated for the asconfig test in " + process.cwd()); + if (errored) { process.exit(1); } + process.exit(0); +} - const theModule = loader.instantiateSync(binary); - try { - theModule.exports._start(); - } catch (err) { - console.error("The wasm module _start() function failed in " + process.cwd()); - console.error(err); - process.exit(1); - } - return 0; -}); +if (!binary) { + console.error("No binary was generated for the asconfig test in " + process.cwd()); + process.exit(1); +} + +const theModule = loader.instantiateSync(binary); + +try { + theModule.exports._start(); +} catch (err) { + console.error("The wasm module _start() function failed in " + process.cwd()); + console.error(err); + process.exit(1); +} diff --git a/tests/asconfig/package.json b/tests/asconfig/package.json index 1c6818ce3b..7fa748c1cb 100644 --- a/tests/asconfig/package.json +++ b/tests/asconfig/package.json @@ -1,4 +1,5 @@ { + "type": "module", "private": true, "scripts": { "test": "npm run test:use-consts && npm run test:target && npm run test:entry-points && npm run test:complicated && npm run test:extends", diff --git a/tests/asconfig/respect-inheritence/package.json b/tests/asconfig/respect-inheritence/package.json index 6d14e2db7a..f10539c257 100644 --- a/tests/asconfig/respect-inheritence/package.json +++ b/tests/asconfig/respect-inheritence/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js --optimizeLevel 3" + "test": "node --enable-source-maps ../index.js --optimizeLevel 3" } } diff --git a/tests/asconfig/target/package.json b/tests/asconfig/target/package.json index 0d5843d61f..9ac4c7d239 100644 --- a/tests/asconfig/target/package.json +++ b/tests/asconfig/target/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js --target debug && node ../index.js --showConfig" + "test": "node --enable-source-maps ../index.js --target debug && node ../index.js --showConfig" } } diff --git a/tests/asconfig/use-consts/package.json b/tests/asconfig/use-consts/package.json index f98424bae9..c9b011f82c 100644 --- a/tests/asconfig/use-consts/package.json +++ b/tests/asconfig/use-consts/package.json @@ -1,6 +1,6 @@ { "private": true, "scripts": { - "test": "node ../index.js" + "test": "node --enable-source-maps ../index.js" } } diff --git a/tests/binaryen/asmjs-math-builtins.js b/tests/binaryen/asmjs-math-builtins.js deleted file mode 100644 index d60abbe2ea..0000000000 --- a/tests/binaryen/asmjs-math-builtins.js +++ /dev/null @@ -1,45 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("F", binaryen.f64, [ binaryen.f64 ]); - -mod.addFunction("floor", funcType, [], - mod.f64.floor( - mod.get_local(0, binaryen.f64) - ) -); -mod.addExport("floor", "floor"); - -mod.addFunction("ceil", funcType, [], - mod.f64.ceil( - mod.get_local(0, binaryen.f64) - ) -); -mod.addExport("ceil", "ceil"); - -mod.addFunction("sqrt", funcType, [], - mod.f64.sqrt( - mod.get_local(0, binaryen.f64) - ) -); -mod.addExport("sqrt", "sqrt"); - -mod.addFunction("trunc", funcType, [], - mod.f64.trunc( - mod.get_local(0, binaryen.f64) - ) -); -mod.addExport("trunc", "trunc"); - -mod.addFunction("nearest", funcType, [], - mod.f64.nearest( - mod.get_local(0, binaryen.f64) - ) -); -mod.addExport("nearest", "nearest"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -console.log(mod.emitAsmjs()); diff --git a/tests/binaryen/asmjs.wat b/tests/binaryen/asmjs.wat deleted file mode 100644 index 89fdedb9c6..0000000000 --- a/tests/binaryen/asmjs.wat +++ /dev/null @@ -1,24 +0,0 @@ -(module - (type $i (func (param i32) (result i32))) - (memory $0 0) - (export "test/switch/case/eval" (func $test/switch/case/eval)) - (export "const" (func $test/switch/case/eval)) - (import "env" "switch" (func $switch (param i32 i32 i32 i32))) - (global $INT i32 (i32.const 4)) - (global $FLT i32 (f32.const -4.0)) - (global $DBL i32 (f64.const -4.0)) - (func $test/switch/case/eval (; 0 ;) (type $i) (param $0 i32) (result i32) - (if (result i32) - (i32.eq - (get_global $INT) - (i32.load - (i32.const 0) - ) - ) - (i32.ctz - (i32.const 0) - ) - (get_local $0) - ) - ) -) \ No newline at end of file diff --git a/tests/binaryen/block-pre.js b/tests/binaryen/block-pre.js deleted file mode 100644 index 90689be029..0000000000 --- a/tests/binaryen/block-pre.js +++ /dev/null @@ -1,26 +0,0 @@ -var binaryen = require("binaryen"); -var mod = binaryen.parseText(` -(module - (global $ref (mut i32) (i32.const 1)) - (func $test - (call $release - (block (result i32) - (global.get $ref) - (global.set $ref - (call $retain - (i32.const 2) (; some-expression-that-might-conflict-with-a-temp ;) - ) - ) - ) - ) - ) - (func $retain (param i32) (result i32) - (local.get 0) - ) - (func $release (param i32) - (nop) - ) -) -`); -if (!mod.validate()) console.log(":-("); -else console.log(mod.emitText()); diff --git a/tests/binaryen/block-stack.js b/tests/binaryen/block-stack.js deleted file mode 100644 index 229e14834c..0000000000 --- a/tests/binaryen/block-stack.js +++ /dev/null @@ -1,19 +0,0 @@ -var binaryen = require("binaryen"); - -// "non-final block elements returning a value must be drop()ed" -// "0 == 0: block with value must not have last element that is none, on" - -var mod = new binaryen.Module(); - -var funcType = mod.addFunctionType("i", binaryen.i32, []); -var func = mod.addFunction("test", funcType, [ binaryen.i32 ], - mod.block("", [ - mod.teeLocal(0, mod.i32.const(1)), - mod.nop() - ], binaryen.i32) -); -mod.addExport("test", func); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); diff --git a/tests/binaryen/break-value.js b/tests/binaryen/break-value.js deleted file mode 100644 index dc280ddd90..0000000000 --- a/tests/binaryen/break-value.js +++ /dev/null @@ -1,24 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var ftype = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("test", ftype, [], - mod.block("label", [ - mod.drop( // "br_if returns the value too" - mod.break("label", - // condition: $0 == 1 - mod.i32.eq( - mod.getLocal(0, binaryen.i32), - mod.i32.const(1) - ), - // value: 1 - mod.i32.const(1) - ) - ), - // push: 0 - mod.i32.const(0) - ], binaryen.i32) -); -console.log(mod.emitText()); - -mod.validate(); diff --git a/tests/binaryen/const-expr.js b/tests/binaryen/const-expr.js deleted file mode 100644 index 61b3ddcaa6..0000000000 --- a/tests/binaryen/const-expr.js +++ /dev/null @@ -1,29 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); - -var addType = mod.addFunctionType("iii", binaryen.i32, [ binaryen.i32, binaryen.i32 ]); -mod.addFunction("add", addType, [], - mod.i32.add( - mod.get_local(0, binaryen.i32), - mod.get_local(1, binaryen.i32) - ) -); -mod.addFunctionExport("add", "add"); - -var testType = mod.addFunctionType("i", binaryen.i32, []); -mod.addFunction("test", testType, [], - mod.call("add", [ - mod.i32.const(1), - mod.i32.const(2) - ], binaryen.i32) -); -mod.addFunctionExport("test", "test"); - -binaryen.setOptimizeLevel(4); -binaryen.setShrinkLevel(0); -binaryen.setDebugInfo(false); -mod.runPasses(["precompute"]); -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); diff --git a/tests/binaryen/const-expr.wat b/tests/binaryen/const-expr.wat deleted file mode 100644 index 936b198e1f..0000000000 --- a/tests/binaryen/const-expr.wat +++ /dev/null @@ -1,19 +0,0 @@ -(module - (type $iii (func (param i32 i32) (result i32))) - (type $i (func (result i32))) - (export "add" (func $add)) - (export "test" (func $test)) - (func $add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (func $test (; 1 ;) (type $i) (result i32) - (call $add - (i32.const 1) - (i32.const 2) - ) - ) -) - diff --git a/tests/binaryen/const-global.js b/tests/binaryen/const-global.js deleted file mode 100644 index bd10d398be..0000000000 --- a/tests/binaryen/const-global.js +++ /dev/null @@ -1,18 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); - -mod.addGlobal("testGlobal", binaryen.i32, false, mod.i32.const(2)); -var funcType = mod.addFunctionType("i", binaryen.i32, []); -mod.addFunction("test", funcType, [], - mod.get_global("testGlobal", binaryen.i32) -); -mod.addFunctionExport("test", "test"); - -binaryen.setOptimizeLevel(4); -binaryen.setShrinkLevel(0); -binaryen.setDebugInfo(false); -mod.optimize(); -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); diff --git a/tests/binaryen/const-global.wat b/tests/binaryen/const-global.wat deleted file mode 100644 index 5b91d25ace..0000000000 --- a/tests/binaryen/const-global.wat +++ /dev/null @@ -1,8 +0,0 @@ -(module - (type $i (func (result i32))) - (global $testGlobal i32 (i32.const 2)) - (export "test" (func $test)) - (func $test (; 0 ;) (type $i) (result i32) - (get_global $testGlobal) - ) -) \ No newline at end of file diff --git a/tests/binaryen/const-local.js b/tests/binaryen/const-local.js deleted file mode 100644 index 3592282a2b..0000000000 --- a/tests/binaryen/const-local.js +++ /dev/null @@ -1,18 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); - -var funcType = mod.addFunctionType("i", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("test", funcType, [], mod.block("", [ - mod.setLocal(0, mod.i32.const(2)), - mod.getLocal(0, binaryen.i32) -], binaryen.i32)); -mod.addFunctionExport("test", "test"); - -binaryen.setOptimizeLevel(4); -binaryen.setShrinkLevel(0); -binaryen.setDebugInfo(false); -mod.optimize(); -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); diff --git a/tests/binaryen/constant-indirect-arg.js b/tests/binaryen/constant-indirect-arg.js deleted file mode 100644 index 080faed8db..0000000000 --- a/tests/binaryen/constant-indirect-arg.js +++ /dev/null @@ -1,26 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); - -var ftype_v = mod.addFunctionType("v", binaryen.none, []); -var ftype_vi = mod.addFunctionType("vi", binaryen.none, [ binaryen.i32 ]); - -mod.addFunction("callee-2", ftype_v, [], mod.block(null, [ -])); -mod.addFunction("callee-1", ftype_vi, [], mod.block(null, [ - mod.call_indirect(mod.getLocal(0, binaryen.i32), [], "v"), -])); -mod.setFunctionTable(2, 2, [ "callee-1", "callee-2" ]); - -mod.addFunction("caller", ftype_vi, [ binaryen.i32 ], mod.block(null, [ - mod.call_indirect(mod.getLocal(0, binaryen.i32), [ mod.i32.const(1) ], "vi"), -])); -mod.addFunctionExport("caller", "main"); - -binaryen.setOptimizeLevel(4); -binaryen.setShrinkLevel(0); -binaryen.setDebugInfo(false); -mod.optimize(); -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); diff --git a/tests/binaryen/constant-indirect.js b/tests/binaryen/constant-indirect.js deleted file mode 100644 index 2b017703de..0000000000 --- a/tests/binaryen/constant-indirect.js +++ /dev/null @@ -1,22 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); - -var ftype = mod.addFunctionType("v", binaryen.none, []); - -mod.addFunction("callee", ftype, [], mod.block(null, [ -])); -mod.setFunctionTable(1, 1, [ "callee" ]); - -mod.addFunction("caller", ftype, [], mod.block(null, [ - mod.call_indirect(mod.i32.const(0), [], "v"), -])); -mod.addFunctionExport("caller", "main"); - -binaryen.setOptimizeLevel(4); -binaryen.setShrinkLevel(0); -binaryen.setDebugInfo(false); -mod.optimize(); -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); diff --git a/tests/binaryen/get_global-missing.js b/tests/binaryen/get_global-missing.js deleted file mode 100644 index 58230c6e0c..0000000000 --- a/tests/binaryen/get_global-missing.js +++ /dev/null @@ -1,17 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("v", binaryen.void, []); -var func = mod.addFunction("test", funcType, [], - mod.block("", [ - mod.drop( - mod.getGlobal("missing", binaryen.i32) - ) - ]) -); -mod.addFunctionExport("test", "test", func); - -console.log(mod.emitText()); -if (mod.validate()) - console.log("-> validates"); -mod.emitBinary(); // -> Assertion failed: mappedGlobals.count(name), at: binaryen/src/wasm/wasm-binary.cpp,355,getGlobalIndex at Error diff --git a/tests/binaryen/get_local-missing.js b/tests/binaryen/get_local-missing.js deleted file mode 100644 index 6abae3a4cb..0000000000 --- a/tests/binaryen/get_local-missing.js +++ /dev/null @@ -1,19 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("v", binaryen.void, []); -var func = mod.addFunction("test", funcType, [], - mod.block("", [ - mod.drop( - mod.getLocal(0, binaryen.i32) - ) - ]) -); -mod.addFunctionExport("test", "test", func); - -console.log(mod.emitText()); -if (mod.validate()) { - console.log("-> validates"); - var binary = mod.emitBinary(); - new WebAssembly.Module(binary); // CompileError: WebAssembly.Module(): Compiling wasm function #0:test failed: invalid local index: 0 @+34 -} diff --git a/tests/binaryen/i64-binary-result.js b/tests/binaryen/i64-binary-result.js deleted file mode 100644 index 59ae862120..0000000000 --- a/tests/binaryen/i64-binary-result.js +++ /dev/null @@ -1,18 +0,0 @@ -var binaryen = require("binaryen"); - -// "non-final block elements returning a value must be drop()ed" -// "0 == 0: block with value must not have last element that is none, on" - -var mod = new binaryen.Module(); - -var funcType = mod.addFunctionType("I", binaryen.void, [ binaryen.i64 ]); -var func = mod.addFunction("test", funcType, [ binaryen.i32 ], - mod.block("", [ - mod.setLocal(1, mod.i64.eq(mod.i64.const(0, 0), mod.getLocal(0, binaryen.i64))) - ]) -); -mod.addExport("test", func); - -console.log(mod.emitText()); -if (mod.validate()) - console.log("-> ok: i64.eq returns i32"); diff --git a/tests/binaryen/inline-export.js b/tests/binaryen/inline-export.js deleted file mode 100644 index 992fd6a8e2..0000000000 --- a/tests/binaryen/inline-export.js +++ /dev/null @@ -1,39 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("iii", binaryen.i32, [ binaryen.i32, binaryen.i32 ]); - -mod.addFunction("exported_add", funcType, [], - mod.i32.add( - mod.get_local(0, binaryen.i32), - mod.get_local(1, binaryen.i32) - ) -); -mod.addFunctionExport("exported_add", "add"); - -mod.addFunction("internal_sub", funcType, [], - mod.i32.sub( - mod.get_local(0, binaryen.i32), - mod.get_local(1, binaryen.i32) - ) -); - -mod.addFunction("test", funcType, [], - mod.i32.add( - mod.call("exported_add", [ // should become inlined but doesn't - mod.get_local(0, binaryen.i32), - mod.get_local(1, binaryen.i32) - ], binaryen.i32), - mod.call("internal_sub", [ // just like this one becomes inlined - mod.get_local(0, binaryen.i32), - mod.get_local(1, binaryen.i32) - ], binaryen.i32) - ) -); -mod.addFunctionExport("test", "test"); - -// binaryen.setOptimizeLevel(3); -// binaryen.setShrinkLevel(0); -mod.optimize(); -if (!mod.validate()) throw Error(); -console.log(mod.emitText()); diff --git a/tests/binaryen/libm.html b/tests/binaryen/libm.html deleted file mode 100644 index 54427b5be7..0000000000 --- a/tests/binaryen/libm.html +++ /dev/null @@ -1,22 +0,0 @@ - - diff --git a/tests/binaryen/multi-value.js b/tests/binaryen/multi-value.js deleted file mode 100644 index f9610b0018..0000000000 --- a/tests/binaryen/multi-value.js +++ /dev/null @@ -1,15 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var ii = binaryen.createType([ binaryen.i32, binaryen.i32 ]); -mod.addFunction("test", ii, ii, [], - mod.unreachable() -); -mod.addExport("test", "test"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -mod.optimize(); -console.log(mod.emitText()); diff --git a/tests/binaryen/optimize-if-eqz.js b/tests/binaryen/optimize-if-eqz.js deleted file mode 100644 index fb85fb8289..0000000000 --- a/tests/binaryen/optimize-if-eqz.js +++ /dev/null @@ -1,19 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("i", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("test", funcType, [], - mod.if( - mod.i32.eqz(mod.getLocal(0, binaryen.i32)), - mod.i32.const(0), - mod.getLocal(0, binaryen.i32) - ) -); -mod.addExport("test", "test"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -mod.optimize(); -console.log(mod.emitText()); diff --git a/tests/binaryen/optimize-if-eqz.wat b/tests/binaryen/optimize-if-eqz.wat deleted file mode 100644 index 3f04e0735b..0000000000 --- a/tests/binaryen/optimize-if-eqz.wat +++ /dev/null @@ -1,14 +0,0 @@ -(module - (type $i (func (param i32) (result i32))) - (memory $0 0) - (export "test" (func $test)) - (func $test (; 0 ;) (type $i) (param $0 i32) (result i32) - (if (result i32) - (i32.eqz - (get_local $0) - ) - (i32.const 0) - (get_local $0) - ) - ) -) \ No newline at end of file diff --git a/tests/binaryen/precompute-join.wat b/tests/binaryen/precompute-join.wat deleted file mode 100644 index 6850e1dc3b..0000000000 --- a/tests/binaryen/precompute-join.wat +++ /dev/null @@ -1,20 +0,0 @@ -(module - (type $ii (func (param i32) (result i32))) - (export "fls" (func $assembly/tlsf/fls)) - (func $assembly/tlsf/fls (; 8 ;) (type $ii) (param $0 i32) (result i32) - (return - (i32.sub - (i32.sub - (i32.shl - (i32.const 4) - (i32.const 3) - ) - (i32.clz - (get_local $0) - ) - ) - (i32.const 1) - ) - ) - ) -) diff --git a/tests/binaryen/reloop.js b/tests/binaryen/reloop.js deleted file mode 100644 index 1a4e739ad8..0000000000 --- a/tests/binaryen/reloop.js +++ /dev/null @@ -1,71 +0,0 @@ -var binaryen = require("binaryen"); -binaryen.setOptimizeLevel(3); -binaryen.setShrinkLevel(0); - -function usingBranches() { - var module = new binaryen.Module(); - var rl = new binaryen.Relooper(module); - var entry = rl.addBlock(module.nop()); - - for (let i = 0; i < 10; ++i) { - rl.addBranch(entry, - rl.addBlock( - module.return( - module.call("other", [ module.i32.const(i) ], binaryen.none, binaryen.i32) - ) - ), - module.i32.eq( - module.local.get(0, binaryen.i32), - module.i32.const(i) - ) - ); - } - rl.addBranch(entry, - rl.addBlock( - module.unreachable() - ) - ); - - module.addFunction("test", binaryen.i32, binaryen.i32, [ binaryen.i32 ], rl.renderAndDispose(entry, 1)); - module.addFunctionImport("other", "env", "other", binaryen.i32, binaryen.i32); - module.addFunctionExport("test", "test"); - - console.log("=== unoptimized ==="); - console.log(module.emitText()); - module.optimize(); - console.log("=== optimized ==="); - console.log(module.emitText()); -} -usingBranches(); - -/* function usingSwitch() { - var module = new binaryen.Module(); - var rl = new binaryen.Relooper(module); - var entry = rl.addBlockWithSwitch(module.nop(), module.local.get(0, binaryen.i32)); - - for (let i = 0; i < 10; ++i) { - rl.addBranchForSwitch(entry, - rl.addBlock( - module.return( - module.call("other", [ module.i32.const(i) ], binaryen.none, binaryen.i32) - ) - ), - [ i ] - ); - } - rl.addBranchForSwitch(entry, - rl.addBlock( - module.unreachable() - ), - [] - ); - - module.addFunction("test", binaryen.i32, binaryen.i32, [ binaryen.i32 ], rl.renderAndDispose(entry, 1)); - module.addFunctionImport("other", "env", "other", binaryen.none, binaryen.i32); - module.addFunctionExport("test", "test"); - - console.log(module.emitText()); - module.optimize(); - console.log(module.emitText()); -} -usingSwitch(); */ diff --git a/tests/binaryen/return-flatten.js b/tests/binaryen/return-flatten.js deleted file mode 100644 index b8fc3c4659..0000000000 --- a/tests/binaryen/return-flatten.js +++ /dev/null @@ -1,19 +0,0 @@ -var binaryen = require("binaryen"); - -var module = new binaryen.Module(); -module.addFunction("nothing", binaryen.none, binaryen.none, [], module.nop()); -module.addFunction("test", binaryen.none, binaryen.none, [], - module.return( - module.call("nothing", [], binaryen.none) - ) -); -module.addExport("test", "test"); - -console.log(module.emitText()); -if (!module.validate()) - console.log("-> does not validate"); - -binaryen.setOptimizeLevel(4); -module.runPasses(["flatten"]); -module.optimize(); // Fatal: IR must be flat: run --flatten beforehand -console.log(module.emitText()); diff --git a/tests/binaryen/set_global-immutable.js b/tests/binaryen/set_global-immutable.js deleted file mode 100644 index 3907ccc71c..0000000000 --- a/tests/binaryen/set_global-immutable.js +++ /dev/null @@ -1,16 +0,0 @@ -var binaryen = require("binaryen"); - -// "It is a validation error for a set_global to index an immutable global variable." - -var mod = new binaryen.Module(); -mod.addGlobal("a", binaryen.i32, false, mod.i32.const(0)); - -var funcType = mod.addFunctionType("v", binaryen.none, []); -var func = mod.addFunction("start", funcType, [], mod.block("", [ - mod.setGlobal("a", mod.i32.const(1)) -])); -mod.setStart(func); - -console.log(mod.emitText()); -if (mod.validate()) - console.log("-> validates"); diff --git a/tests/binaryen/unreachable-loop.js b/tests/binaryen/unreachable-loop.js deleted file mode 100644 index 462d790a3b..0000000000 --- a/tests/binaryen/unreachable-loop.js +++ /dev/null @@ -1,23 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("v", binaryen.none, []); -mod.addFunction("0", funcType, [], - mod.drop( - mod.block("label$1", [ - mod.loop("label$2", - mod.unreachable() - ) - ], binaryen.i32) - ) -); -mod.addExport("0", "0"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -var bin = mod.emitBinary(); -require("fs").writeFileSync(__dirname + "/unreachable-loop.wasm", bin); -var mod2 = binaryen.readBinary(bin); -console.log(mod2.emitText()); diff --git a/tests/binaryen/unreachable-loop.wat b/tests/binaryen/unreachable-loop.wat deleted file mode 100644 index 7458bb4dda..0000000000 --- a/tests/binaryen/unreachable-loop.wat +++ /dev/null @@ -1,11 +0,0 @@ -(module - (func $0 - (drop - (block $label$1 (result i32) - (loop $label$2 - (unreachable) - ) - ) - ) - ) -) \ No newline at end of file diff --git a/tests/binaryen/unreachable-spam.js b/tests/binaryen/unreachable-spam.js deleted file mode 100644 index 621892c636..0000000000 --- a/tests/binaryen/unreachable-spam.js +++ /dev/null @@ -1,25 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("0", funcType, [], - mod.block(null, [ - mod.loop("continue", - mod.block(null, [ - mod.if( - mod.local.get(0, binaryen.i32), - mod.return(mod.i32.const(1)), - mod.return(mod.i32.const(2)) - ), - mod.unreachable() - ]) - ), - mod.unreachable() - ], binaryen.i32) -); -mod.addExport("0", "0"); - -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); -console.log(mod.emitStackIR(/* true */)); // optimize-stack-ir fixes this diff --git a/tests/browser-asc.js b/tests/browser-asc.js deleted file mode 100644 index d8a40cb0c3..0000000000 --- a/tests/browser-asc.js +++ /dev/null @@ -1,83 +0,0 @@ -const asc = require("../dist/asc.js"); - -if (typeof asc.definitionFiles.assembly !== "string") throw Error("missing bundled assembly.d.ts"); -if (typeof asc.definitionFiles.portable !== "string") throw Error("missing bundled portable.d.ts"); - -const stdout = asc.createMemoryStream(); -const stderr = asc.createMemoryStream(); -const files = { "module.ts": `export function test(): void {}` }; - -console.log("# asc --version"); - -asc.main([ - "--version" -], { - stdout: stdout, - stderr: stderr -}, err => { - console.log(">>> STDOUT >>>"); - process.stdout.write(stdout.toString()); - stdout.reset(); - console.log(">>> STDERR >>>"); - process.stdout.write(stderr.toString()); - stderr.reset(); -}); - -console.log("\n# asc --help"); - -asc.main([ - "--help" -], { - stdout: stdout, - stderr: stderr -}, err => { - console.log(">>> STDOUT >>>"); - process.stdout.write(stdout.toString()); - stdout.reset(); - console.log(">>> STDERR >>>"); - process.stdout.write(stderr.toString()); - stderr.reset(); -}); - -console.log("\n# asc module.ts --textFile"); - -asc.main([ - "module.ts", - "--textFile" -], { - stdout: stdout, - stderr: stderr, - readFile: (name, baseDir) => { - console.log("readFile: " + name + ", baseDir=" + baseDir); - if (Object.prototype.hasOwnProperty.call(files, name)) return files[name]; - return null; - }, - writeFile: (name, data, baseDir) => { - console.log("writeFile: " + name + ", baseDir=" + baseDir); - }, - listFiles: (dirname, baseDir) => { - console.log("listFiles: " + dirname + ", baseDir=" + baseDir); - return []; - } -}, err => { - if (err) { - console.log(">>> THROWN >>>"); - console.log(err); - } -}); - -console.log(">>> STDOUT >>>"); -process.stdout.write(stdout.toString()); -console.log(">>> STDERR >>>"); -process.stdout.write(stderr.toString()); - -console.log("\n# asc.compileString"); - -const output = asc.compileString(`export function test(): void {}`, { optimizeLevel: 3, exportTable: true, measure: true }); -console.log(">>> .stdout >>>"); -process.stdout.write(output.stdout.toString()); -console.log(">>> .stderr >>>"); -process.stdout.write(output.stderr.toString()); -console.log(">>> .text >>>"); -process.stdout.write(output.text); -console.log(">>> .binary >>> " + output.binary.length + " bytes"); diff --git a/tests/browser.js b/tests/browser.js new file mode 100644 index 0000000000..0661990ef2 --- /dev/null +++ b/tests/browser.js @@ -0,0 +1,65 @@ +import * as asc from "../dist/asc.js"; + +if (typeof asc.definitionFiles.assembly !== "string") throw Error("missing bundled assembly.d.ts"); +if (typeof asc.definitionFiles.portable !== "string") throw Error("missing bundled portable.d.ts"); + +const files = { "index.ts": `export function test(): void {}` }; + +console.log("# asc --version"); +{ + const { stdout, stderr } = await asc.main([ "--version" ]); + + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc --help"); +{ + const { stdout, stderr } = await asc.main([ "--help" ]); + + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc index.ts --textFile"); +{ + const { error, stdout, stderr } = await asc.main([ "index.ts", "--textFile" ], { + readFile: (name, baseDir) => { + console.log("readFile: " + name + ", baseDir=" + baseDir); + if (Object.prototype.hasOwnProperty.call(files, name)) return files[name]; + return null; + }, + writeFile: (name, data, baseDir) => { + console.log("writeFile: " + name + ", baseDir=" + baseDir); + }, + listFiles: (dirname, baseDir) => { + console.log("listFiles: " + dirname + ", baseDir=" + baseDir); + return []; + } + }); + + if (error) { + console.log(">>> THROWN >>>"); + console.log(error); + } + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc.compileString"); +{ + const { stdout, stderr, text, binary } = await asc.compileString(`export function test(): void {}`, { optimizeLevel: 3, exportTable: true, stats: true }); + console.log(">>> .stdout >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> .stderr >>>"); + process.stdout.write(stderr.toString()); + console.log(">>> .text >>>"); + process.stdout.write(text); + console.log(">>> .binary >>> " + binary.length + " bytes"); +} diff --git a/tests/cli/options.js b/tests/cli/options.js index 3e47ccb28a..93fb81fdcd 100644 --- a/tests/cli/options.js +++ b/tests/cli/options.js @@ -1,5 +1,5 @@ -const assert = require("assert"); -const optionsUtil = require("../../cli/util/options"); +import assert from "assert"; +import * as optionsUtil from "../../cli/util/options.js"; const config = { "enable": { @@ -33,10 +33,10 @@ assert.deepStrictEqual(merged.enable, ["c"]); assert.deepStrictEqual(merged.disable, ["a", "b"]); // Populating defaults should work after the fact -merged = optionsUtil.addDefaults(config, {}); +optionsUtil.addDefaults(config, merged = {}); assert.deepStrictEqual(merged.other, ["x"]); -merged = optionsUtil.addDefaults(config, { other: ["y"] }); +optionsUtil.addDefaults(config, merged = { other: ["y"] }); assert.deepStrictEqual(merged.other, ["y"]); // Complete usage test diff --git a/tests/compiler.js b/tests/compiler.js index affd483713..510b788a63 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -1,17 +1,22 @@ +import fs from "fs"; +import path from "path"; +import os from "os"; +import v8 from "v8"; +import cluster from "cluster"; +import { createRequire } from "module"; +import { fileURLToPath, pathToFileURL } from "url"; +import { WASI } from "wasi"; +import glob from "glob"; +import { stderrColors, stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; +import { coreCount, threadCount } from "../util/cpu.js"; +import { diff } from "../util/text.js"; +import { Rtrace } from "../lib/rtrace/index.js"; +import asc from "../dist/asc.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); const startTime = Date.now(); -const fs = require("fs"); -const path = require("path"); -const os = require("os"); -const v8 = require("v8"); -const WASI = require("wasi").WASI; -const glob = require("glob"); -const colorsUtil = require("../cli/util/colors"); -const optionsUtil = require("../cli/util/options"); -const diff = require("./util/diff"); -const asc = require("../cli/asc.js"); -const { Rtrace } = require("../lib/rtrace/umd"); -const cluster = require("cluster"); -const coreCount = require("physical-cpu-count"); const config = { "create": { @@ -33,6 +38,12 @@ const config = { ], "type": "b" }, + "noColors": { + "description": [ + "Disables terminal colors." + ], + "type": "b" + }, "rtraceVerbose": { "description": [ "Enables verbose rtrace output." @@ -53,12 +64,15 @@ const opts = optionsUtil.parse(process.argv.slice(2), config); const args = opts.options; const argv = opts.arguments; +stdoutColors.enabled = process.stdout.isTTY && !args.noColors; +stderrColors.enabled = process.stderr.isTTY && !args.noColors; + if (args.help) { console.log([ - colorsUtil.white("SYNTAX"), - " " + colorsUtil.cyan("npm run test:compiler --") + " [test1, test2 ...] [options]", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("npm run test:compiler --") + " [test1, test2 ...] [options]", "", - colorsUtil.white("OPTIONS"), + stdoutColors.white("OPTIONS"), optionsUtil.help(config) ].join(os.EOL) + os.EOL); process.exit(0); @@ -66,40 +80,44 @@ if (args.help) { const features = process.env.ASC_FEATURES ? process.env.ASC_FEATURES.split(",") : []; const featuresConfig = require("./features.json"); - -var failedTests = new Set(); -var failedMessages = new Map(); -var skippedTests = new Set(); -var skippedMessages = new Map(); - -const basedir = path.join(__dirname, "compiler"); +const basedir = path.join(dirname, "compiler"); // Gets a list of all relevant tests function getTests() { - var tests = glob.sync("**/!(_*).ts", { cwd: basedir }).map(name => name.replace(/\.ts$/, "")); + var tests = glob.sync("**/!(_*).ts", { cwd: basedir }) + .map(name => name.replace(/\.ts$/, "")) + .filter(name => !name.endsWith(".d") && !name.includes("node_modules")); if (argv.length) { // run matching tests only tests = tests.filter(filename => argv.indexOf(filename.replace(/\.ts$/, "")) >= 0); if (!tests.length) { - console.log(colorsUtil.red("FAILURE: ") + colorsUtil.white("No matching tests: " + argv.join(" ") + "\n")); + console.log(stdoutColors.red("FAILURE: ") + stdoutColors.white("No matching tests: " + argv.join(" ") + "\n")); process.exit(1); } } return tests; } +function measureStart() { + return process.hrtime(); +} + +function measureEnd(start) { + const hrtime = process.hrtime(start); + return `${(hrtime[0] * 1e3 + hrtime[1] / 1e6).toFixed(3)} ms`; +} + // Starts a new section within a test function section(title) { - var start = process.hrtime(); + const start = measureStart(); console.log("- " + title); return { title, - end: function(code) { - const times = process.hrtime(start); - const time = asc.formatTime(times[0] * 1e9 + times[1]); + end(code) { + const time = measureEnd(start); switch (code) { - case SUCCESS: console.log(" " + colorsUtil.green ("SUCCESS") + " (" + time + ")\n"); break; - default: console.log(" " + colorsUtil.red("FAILURE") + " (" + time + ")\n"); break; - case SKIPPED: console.log(" " + colorsUtil.yellow("SKIPPED") + " (" + time + ")\n"); break; + case SUCCESS: console.log(" " + stdoutColors.green("SUCCESS") + " (" + time + ")\n"); break; + default: console.log(" " + stdoutColors.red("FAILURE") + " (" + time + ")\n"); break; + case SKIPPED: console.log(" " + stdoutColors.yellow("SKIPPED") + " (" + time + ")\n"); break; } } }; @@ -109,28 +127,32 @@ const FAILURE = 1; const SKIPPED = 2; // Runs a single test -function runTest(basename) { - console.log(colorsUtil.white("# compiler/" + basename) + "\n"); +async function runTest(basename) { + console.log(stdoutColors.white("# compiler/" + basename) + "\n"); const configPath = path.join(basedir, basename + ".json"); - const config = fs.existsSync(configPath) - ? require(configPath) - : {}; - + const config = fs.existsSync(configPath) ? require(configPath) : {}; const stdout = asc.createMemoryStream(); const stderr = asc.createMemoryStream(chunk => process.stderr.write(chunk.toString().replace(/^(?!$)/mg, " "))); stderr.isTTY = true; - var asc_flags = []; var asc_rtrace = !!config.asc_rtrace; var v8_flags = ""; var v8_no_flags = ""; var missing_features = []; + + // Makes sure to reset the environment after + function prepareResult(code, message = null) { + if (v8_no_flags) v8.setFlagsFromString(v8_no_flags); + if (!args.createBinary) fs.unlink(path.join(basedir, basename + ".debug.wasm"), err => { /* nop */ }); + return { code, message }; + } + if (config.features) { config.features.forEach(feature => { if (!features.includes(feature) && !features.includes("*")) { missing_features.push(feature); - return; + return; // from forEach } var featureConfig = featuresConfig[feature]; if (featureConfig.asc_flags) { @@ -149,48 +171,40 @@ function runTest(basename) { } }); if (missing_features.length) { - console.log("- " + colorsUtil.yellow("feature SKIPPED") + " (" + missing_features.join(", ") + ")\n"); - skippedTests.add(basename); - skippedMessages.set(basename, "feature not enabled"); - if (cluster.isWorker) process.send({ cmd: "skipped", message: skippedMessages.get(basename) }); - return; + console.log("- " + stdoutColors.yellow("feature SKIPPED") + " (" + missing_features.join(", ") + ")\n"); + return prepareResult(SKIPPED, "feature not enabled: " + missing_features.join(", ")); } } if (config.asc_flags) { - config.asc_flags.forEach(flag => { - Array.prototype.push.apply(asc_flags, flag.split(" ")); - }); + config.asc_flags.forEach(flag => { asc_flags.push(...flag.split(" ")); }); } - var failed = false; + // Build debug + { + const cmd = [ + basename + ".ts", + "--baseDir", basedir, + "--debug", + "--textFile" // -> stdout + ]; + if (asc_flags) cmd.push(...asc_flags); + cmd.push("--outFile", basename + ".debug.wasm"); + if (args.noColors) cmd.push("--noColors"); + const compileDebug = section("compile debug"); + const { error } = await asc.main(cmd, { stdout, stderr }); - // Build untouched - var cmd = [ - basename + ".ts", - "--baseDir", basedir, - "--debug", - "--textFile" // -> stdout - ]; - if (asc_flags) - Array.prototype.push.apply(cmd, asc_flags); - cmd.push("--binaryFile", basename + ".untouched.wasm"); - const compileUntouched = section("compile untouched"); - asc.main(cmd, { - stdout: stdout, - stderr: stderr - }, err => { let expectStderr = config.stderr; - if (err) { + if (error) { stderr.write("---\n"); - stderr.write(err.stack); + stderr.write(error.stack); stderr.write("\n---\n"); if (expectStderr) { - compileUntouched.end(SKIPPED); + compileDebug.end(SKIPPED); } else { - compileUntouched.end(FAILURE); + compileDebug.end(FAILURE); } } else { - compileUntouched.end(SUCCESS); + compileDebug.end(SUCCESS); } // check expected stderr patterns in order @@ -199,6 +213,7 @@ function runTest(basename) { const stderrString = stderr.toString(); if (typeof expectStderr === "string") expectStderr = [ expectStderr ]; let lastIndex = 0; + let failed = false; expectStderr.forEach((substr, i) => { var index = stderrString.indexOf(substr, lastIndex); if (index < 0) { @@ -209,161 +224,133 @@ function runTest(basename) { } }); if (failed) { - failedTests.add(basename); - failedMessages.set(basename, "stderr mismatch"); compareStderr.end(FAILURE); - } else { - compareStderr.end(SUCCESS); + return prepareResult(FAILURE, "stderr mismatch"); } - return 1; + compareStderr.end(SUCCESS); + return prepareResult(SUCCESS); } const compareFixture = section("compare fixture"); - var actual = stdout.toString().replace(/\r\n/g, "\n"); + const actual = stdout.toString().replace(/\r\n/g, "\n"); if (args.create) { - fs.writeFileSync(path.join(basedir, basename + ".untouched.wat"), actual, { encoding: "utf8" }); - console.log(" " + colorsUtil.yellow("Created fixture")); + fs.writeFileSync(path.join(basedir, basename + ".debug.wat"), actual, { encoding: "utf8" }); + console.log(" " + stdoutColors.yellow("Created fixture")); compareFixture.end(SKIPPED); } else { - let expected = fs.readFileSync(path.join(basedir, basename + ".untouched.wat"), { encoding: "utf8" }).replace(/\r\n/g, "\n"); + const expected = fs.readFileSync(path.join(basedir, basename + ".debug.wat"), { encoding: "utf8" }).replace(/\r\n/g, "\n"); if (args.noDiff) { if (expected != actual) { - failed = true; - failedTests.add(basename); compareFixture.end(FAILURE); - } else { - compareFixture.end(SUCCESS); + return prepareResult(FAILURE, "fixture mismatch"); } } else { - let diffs = diff(basename + ".untouched.wat", expected, actual); + let diffs = diff(basename + ".debug.wat", expected, actual); if (diffs !== null) { console.log(diffs); - failed = true; - failedTests.add(basename); compareFixture.end(FAILURE); - } else { - compareFixture.end(SUCCESS); + return prepareResult(FAILURE, "fixture mismatch"); } } + compareFixture.end(SUCCESS); } + } + + stdout.length = 0; + stderr.length = 0; - stdout.length = 0; - stderr.length = 0; + const gluePath = path.join(basedir, basename + ".js"); + const glue = fs.existsSync(gluePath) ? await import(pathToFileURL(gluePath)) : {}; - // Build optimized - var cmd = [ + // Build release + { + const cmd = [ basename + ".ts", "--baseDir", basedir, - "--binaryFile", // -> stdout + "--outFile", // -> stdout "-O" ]; - if (asc_flags) - Array.prototype.push.apply(cmd, asc_flags); - if (args.create) - cmd.push("--textFile", basename + ".optimized.wat"); - const compileOptimized = section("compile optimized"); - asc.main(cmd, { - stdout: stdout, - stderr: stderr - }, err => { - if (err) { - stderr.write("---\n"); - stderr.write(err.stack); - stderr.write("\n---\n"); - failed = true; - failedMessages.set(basename, err.message); - failedTests.add(basename); - compileOptimized.end(FAILURE); - return 1; - } else { - compileOptimized.end(SUCCESS); + if (asc_flags) cmd.push(...asc_flags); + if (args.create) cmd.push("--textFile", basename + ".release.wat"); + if (args.noColors) cmd.push("--noColors"); + const compileRelease = section("compile release"); + const { error } = await asc.main(cmd, { stdout: stdout, stderr: stderr }); + + if (error) { + stderr.write("---\n"); + stderr.write(error.stack); + stderr.write("\n---\n"); + compileRelease.end(FAILURE); + return prepareResult(FAILURE, error.message); + } + compileRelease.end(SUCCESS); + + const debugBuffer = fs.readFileSync(path.join(basedir, basename + ".debug.wasm")); + const releaseBuffer = stdout.toBuffer(); + const instantiateDebug = section("instantiate debug"); + if (config.skipInstantiate) { + instantiateDebug.end(SKIPPED); + } else { + + if (!await testInstantiate(debugBuffer, glue, stderr, config.asc_wasi)) { + instantiateDebug.end(FAILURE); + return prepareResult(FAILURE, "instantiate error (debug)"); } - let untouchedBuffer = fs.readFileSync(path.join(basedir, basename + ".untouched.wasm")); - let optimizedBuffer = stdout.toBuffer(); - const gluePath = path.join(basedir, basename + ".js"); - var glue = {}; - if (fs.existsSync(gluePath)) glue = require(gluePath); - - const instantiateUntouched = section("instantiate untouched"); - if (!config.skipInstantiate) { - if (!testInstantiate(basename, untouchedBuffer, glue, stderr, config.asc_wasi)) { - failed = true; - failedTests.add(basename); - instantiateUntouched.end(FAILURE); - } else { - instantiateUntouched.end(SUCCESS); - const instantiateOptimized = section("instantiate optimized"); - if (!testInstantiate(basename, optimizedBuffer, glue, stderr, config.asc_wasi)) { - failed = true; - failedTests.add(basename); - instantiateOptimized.end(FAILURE); - } else { - instantiateOptimized.end(SUCCESS); - } - } - } else { - instantiateUntouched.end(SKIPPED); + instantiateDebug.end(SUCCESS); + const instantiateRelease = section("instantiate release"); + if (!await testInstantiate(releaseBuffer, glue, stderr, config.asc_wasi)) { + instantiateRelease.end(FAILURE); + return prepareResult(FAILURE, "instantiate error (release)"); } + instantiateRelease.end(SUCCESS); + } + } - if (!asc_rtrace) return; - - stdout.length = 0; - stderr.length = 0; - - // Build rtraced - var cmd = [ - basename + ".ts", - "--baseDir", basedir, - "--binaryFile", // -> stdout - "--debug", - "--use", "ASC_RTRACE=1", - "--explicitStart", - // "--runPasses", "instrument-memory" - ]; - if (asc_flags) { - Array.prototype.push.apply(cmd, asc_flags); - } - const compileRtraced = section("compile rtraced"); - asc.main(cmd, { - stdout: stdout, - stderr: stderr - }, err => { - if (err) { - stderr.write("---\n"); - stderr.write(err.stack); - stderr.write("\n---\n"); - failed = true; - failedMessages.set(basename, err.message); - failedTests.add(basename); - compileRtraced.end(FAILURE); - return 1; - } else { - compileRtraced.end(SUCCESS); - } - let rtracedBuffer = stdout.toBuffer(); - const instantiateRtrace = section("instantiate rtrace"); - if (!testInstantiate(basename, rtracedBuffer, glue, stderr, config.asc_wasi)) { - failed = true; - failedTests.add(basename); - instantiateRtrace.end(FAILURE); - } else { - instantiateRtrace.end(SUCCESS); - } - }); - }); - if (failed) return 1; - }); - if (v8_no_flags) v8.setFlagsFromString(v8_no_flags); - if (!args.createBinary) fs.unlink(path.join(basedir, basename + ".untouched.wasm"), err => { /* nop */ }); - if (cluster.isWorker) process.send({ cmd: "done", failed: failed, message: failedMessages.get(basename) }); + stdout.length = 0; + stderr.length = 0; + + // Build rtraced + if (asc_rtrace) { + const cmd = [ + basename + ".ts", + "--baseDir", basedir, + "--outFile", // -> stdout + "--debug", + "--use", "ASC_RTRACE=1", + "--exportStart", "_initialize", + // "--runPasses", "instrument-memory" + ]; + if (asc_flags) cmd.push(...asc_flags); + const compileRtraced = section("compile rtraced"); + const { error } = await asc.main(cmd, { stdout, stderr }); + + if (error) { + stderr.write("---\n"); + stderr.write(error.stack); + stderr.write("\n---\n"); + compileRtraced.end(FAILURE); + return prepareResult(FAILURE, error.message); + } + compileRtraced.end(SUCCESS); + + const rtracedBuffer = stdout.toBuffer(); + const instantiateRtrace = section("instantiate rtrace"); + if (!await testInstantiate(rtracedBuffer, glue, stderr, config.asc_wasi)) { + instantiateRtrace.end(FAILURE); + return prepareResult(FAILURE, "rtrace error"); + } + instantiateRtrace.end(SUCCESS); + } + + return prepareResult(SUCCESS); } // Tests if instantiation of a module succeeds -function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) { +async function testInstantiate(binaryBuffer, glue, stderr, wasiOptions) { var failed = false; try { - let memory = new WebAssembly.Memory({ initial: 10 }); - let exports = {}; + const memory = new WebAssembly.Memory({ initial: 10 }); + const exports = {}; function getString(ptr) { const RUNTIME_HEADER_SIZE = 16; @@ -375,26 +362,40 @@ function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) { return String.fromCharCode.apply(String, U16.subarray(ptr16, ptr16 + len16)); } - let rtrace = new Rtrace({ + const rtrace = new Rtrace({ onerror(err, info) { - console.log(" ERROR: " + err.stack); + console.log(` ERROR: ${err.stack}`); failed = true; - failedMessages.set(basename, err.message); }, oninfo(msg, info) { if (!args.rtraceVerbose) return; - console.log(" " + msg); + console.log(` ${msg}`); }, getMemory() { return instance.exports.memory; } }); - var imports = rtrace.install({ - env: { + function toEnv(name, ref) { + let env = {}; + for (let key of Object.getOwnPropertyNames(ref)) env[`${name}.${key}`] = ref[key]; + let prototype = ref.prototype; + if (prototype) { + for (const key of Object.getOwnPropertyNames(prototype)) { + const original = prototype[key]; + env[`${name}#${key}`] = (thisArg, ...args) => { + return original.apply(thisArg, args); + }; + } + } + return env; + } + + const imports = rtrace.install({ + env: Object.assign({}, globalThis, { memory, abort: function(msg, file, line, column) { - console.log(colorsUtil.red(" abort: " + getString(msg) + " in " + getString(file) + "(" + line + ":" + column + ")")); + console.log(stdoutColors.red(" abort: " + getString(msg) + " in " + getString(file) + "(" + line + ":" + column + ")")); }, trace: function(msg, n) { console.log(" trace: " + getString(msg) + (n ? " " : "") + Array.prototype.slice.call(arguments, 2, 2 + n).join(", ")); @@ -404,45 +405,58 @@ function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) { }, visit: function() { // override in tests - } - }, - Math, - Date, - Reflect + }, + "Date.getTimezoneOffset"() { + // @external.js in bindings tests + return new Date().getTimezoneOffset(); + }, + ...toEnv("Date", Date), + ...toEnv("Math", Math) + }) }); + if (glue.preInstantiate) { - console.log(" [call preInstantiate]"); - glue.preInstantiate(imports, exports); + console.log(" [invoke glue.preInstantiate]"); + const start = measureStart(); + await glue.preInstantiate(imports, exports); + console.log(" [return glue.preInstantiate] " + measureEnd(start)); } - var wasi = null; - if (wasiOptions) { - wasi = new WASI(wasiOptions); - imports.wasi_snapshot_preview1 = wasi.wasiImport; - } - var instance = new WebAssembly.Instance(new WebAssembly.Module(binaryBuffer), imports); + const wasi = wasiOptions ? new WASI(wasiOptions) : null; + if (wasi) imports.wasi_snapshot_preview1 = wasi.wasiImport; + const { instance } = await WebAssembly.instantiate(binaryBuffer, imports); Object.setPrototypeOf(exports, instance.exports); if (glue.postInstantiate) { - console.log(" [call postInstantiate]"); - glue.postInstantiate(instance); + console.log(" [invoke glue.postInstantiate]"); + const start = measureStart(); + await glue.postInstantiate(instance); + console.log(" [return glue.postInstantiate] " + measureEnd(start)); } if (wasi) { - console.log(" [wasi start]"); - let code = wasi.start(instance); - console.log(" [wasi exit] code=" + code); + console.log(" [invoke wasi.start]"); + const start = measureStart(); + const code = wasi.start(instance); + console.log(" [return wasi.start] code=" + code + ", " + measureEnd(start)); } else if (exports._start) { - console.log(" [call start]"); + console.log(" [invoke exports._start]"); + const start = measureStart(); exports._start(); + console.log(" [return exports._start] " + measureEnd(start)); + } else if (exports._initialize) { + console.log(" [invoke exports._initialize]"); + const start = measureStart(); + exports._initialize(); + console.log(" [return exports._initialize] " + measureEnd(start)); } if (glue.postStart) { - console.log(" [call postStart]"); + console.log(" [invoke glue.postStart]"); + const start = measureStart(); glue.postStart(instance); + console.log(" [return glue.postStart] " + measureEnd(start)); } - let leakCount = rtrace.check(); + const leakCount = rtrace.check(); if (leakCount) { - let msg = "memory leak detected: " + leakCount + " leaking"; failed = true; - failedMessages.set(basename, msg); - console.log(" " + msg); + console.log(` memory leak detected: ${leakCount} leaking`); } if (!failed) { if (rtrace.active) { @@ -455,106 +469,106 @@ function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) { } return true; } - } catch (e) { + } catch (err) { stderr.write("---\n"); - stderr.write(e.stack); + stderr.write(err.stack); stderr.write("\n---\n"); - failed = true; - failedMessages.set(basename, e.message); } return false; } // Evaluates the overall test result -function evaluateResult() { +function evaluateResult(failedTests, skippedTests) { if (skippedTests.size) { - console.log(colorsUtil.yellow("WARNING: ") + colorsUtil.white(skippedTests.size + " compiler tests have been skipped:\n")); - skippedTests.forEach(name => { - var message = skippedMessages.has(name) ? colorsUtil.gray("[" + skippedMessages.get(name) + "]") : ""; - console.log(" " + name + " " + message); - }); + console.log(stdoutColors.yellow("WARNING: ") + stdoutColors.white(skippedTests.size + " compiler tests have been skipped:\n")); + for (let [name, message] of skippedTests) { + console.log(" " + name + " " + stdoutColors.gray("[" + (message || "???") + "]")); + } console.log(); } if (failedTests.size) { process.exitCode = 1; - console.log(colorsUtil.red("FAILURE: ") + colorsUtil.white(failedTests.size + " compiler tests had failures:\n")); - failedTests.forEach(name => { - var message = failedMessages.has(name) ? colorsUtil.gray("[" + failedMessages.get(name) + "]") : ""; - console.log(" " + name + " " + message); - }); + console.log(stdoutColors.red("FAILURE: ") + stdoutColors.white(failedTests.size + " compiler tests had failures:\n")); + for (let [name, message] of failedTests) { + console.log(" " + name + " " + stdoutColors.gray("[" + (message || "???") + "]")); + } console.log(); } - console.log("Time: " + (Date.now() - startTime) + " ms\n"); + console.log(`Time: ${(Date.now() - startTime)} ms\n`); if (!process.exitCode) { - console.log("[ " + colorsUtil.white("SUCCESS") + " ]"); + console.log("[ " + stdoutColors.white("SUCCESS") + " ]"); } } -asc.ready.then(() => { - - // Run tests in parallel if requested - if (args.parallel && coreCount > 1) { - if (cluster.isWorker) { - colorsUtil.supported = true; - process.on("message", msg => { - if (msg.cmd != "run") throw Error("invalid command: " + msg.cmd); - try { - runTest(msg.test); - } catch (e) { - process.send({ cmd: "done", failed: true, message: e.message }); - } +// Run tests in parallel if requested +if (args.parallel && coreCount > 2) { + if (cluster.isWorker) { + process.on("message", msg => { + if (msg.cmd != "run") throw Error("invalid command: " + JSON.stringify(msg)); + stdoutColors.enabled = !msg.noColors; + stderrColors.enabled = !msg.noColors; + runTest(msg.test).then(({ code, message }) => { + process.send({ code, message }); + }, err => { + process.send({ code: FAILURE, message: err.message }); }); - process.send({ cmd: "ready" }); - } else { - const tests = getTests(); - // const sizes = new Map(); - // tests.forEach(name => sizes.set(name, fs.statSync(path.join(basedir, name + ".ts")).size)); - // tests.sort((a, b) => sizes.get(b) - sizes.get(a)); - const workers = []; - const current = []; - const outputs = []; - let numWorkers = Math.min(coreCount - 1, tests.length); - console.log("Spawning " + numWorkers + " workers ..."); - cluster.settings.silent = true; - let index = 0; - for (let i = 0; i < numWorkers; ++i) { - let worker = cluster.fork(); - workers[i] = worker; - current[i] = null; + }); + process.send({ code: SUCCESS, message: null }); + } else { + const tests = getTests(); + const failedTests = new Map(); + const skippedTests = new Map(); + const workers = []; + const current = []; + const outputs = []; + let numWorkers = Math.min(coreCount - 1, tests.length); + console.log(`Spawning ${numWorkers} workers (assuming ${coreCount} cores, ${threadCount} threads)...\n`); + cluster.settings.silent = true; + let index = 0; + for (let i = 0; i < numWorkers; ++i) { + let worker = cluster.fork(); + workers[i] = worker; + current[i] = null; + outputs[i] = []; + worker.process.stdout.on("data", buf => { outputs[i].push(buf); }); + worker.process.stderr.on("data", buf => { outputs[i].push(buf); }); + worker.on("message", msg => { + const { code, message } = msg; + process.stdout.write(Buffer.concat(outputs[i]).toString()); + switch (code) { + case SUCCESS: break; + case FAILURE: failedTests.set(current[i], message); break; + case SKIPPED: skippedTests.set(current[i], message); break; + default: throw Error(`invalid code: ${code}`); + } + if (index >= tests.length) { + workers[i] = null; + worker.kill(); + return; + } + current[i] = tests[index++]; outputs[i] = []; - worker.process.stdout.on("data", buf => outputs[i].push(buf)); - worker.process.stderr.on("data", buf => outputs[i].push(buf)); - worker.on("message", msg => { - if (msg.cmd == "done") { - process.stdout.write(Buffer.concat(outputs[i]).toString()); - if (msg.failed) failedTests.add(current[i]); - if (msg.message) failedMessages.set(current[i], msg.message); - } else if (msg.cmd == "skipped") { - process.stdout.write(Buffer.concat(outputs[i]).toString()); - skippedTests.add(current[i]); - if (msg.message) skippedMessages.set(current[i], msg.message); - } else if (msg.cmd != "ready") { - throw Error("invalid command: " + msg.cmd); - } - if (index >= tests.length) { - workers[i] = null; - worker.kill(); - return; - } - current[i] = tests[index++]; - outputs[i] = []; - worker.send({ cmd: "run", test: current[i] }); - }); - worker.on("disconnect", () => { - if (workers[i]) throw Error("worker#" + i + " died unexpectedly"); - if (!--numWorkers) evaluateResult(); - }); - } + worker.send({ cmd: "run", test: current[i], noColors: !stdoutColors.enabled }); + }); + worker.on("disconnect", () => { + if (workers[i]) throw Error(`worker#${i} died unexpectedly`); + if (!--numWorkers) evaluateResult(failedTests, skippedTests); + }); } + } - // Otherwise run tests sequentially - } else { - getTests().forEach(runTest); - evaluateResult(); +// Otherwise run tests sequentially +} else { + let failedTests = new Map(); + let skippedTests = new Map(); + for (const test of getTests()) { + const { code, message } = await runTest(test); + switch (code) { + case SUCCESS: break; + case FAILURE: failedTests.set(test, message); break; + case SKIPPED: skippedTests.set(test, message); break; + default: new Error(`invalid code: ${code}`); + } } -}); + evaluateResult(failedTests, skippedTests); +} diff --git a/tests/compiler/.gitignore b/tests/compiler/.gitignore new file mode 100644 index 0000000000..ddf342489b --- /dev/null +++ b/tests/compiler/.gitignore @@ -0,0 +1 @@ +!node_modules/ diff --git a/tests/compiler/NonNullable.untouched.wat b/tests/compiler/NonNullable.debug.wat similarity index 91% rename from tests/compiler/NonNullable.untouched.wat rename to tests/compiler/NonNullable.debug.wat index 5678a98ff6..90c52b4e98 100644 --- a/tests/compiler/NonNullable.untouched.wat +++ b/tests/compiler/NonNullable.debug.wat @@ -9,7 +9,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $NonNullable/z (mut i32) (i32.const 224)) (global $~lib/memory/__data_end i32 (i32.const 300)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16684)) @@ -203,6 +203,15 @@ unreachable end ) + (func $NonNullable/safetyCheck<~lib/string/String|null> (param $0 i32) + local.get $0 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $0 + call $NonNullable/assertNonNull<~lib/string/String> + end + ) (func $~start call $start:NonNullable ) @@ -219,45 +228,6 @@ unreachable end ) - (func $NonNullable/safetyCheck<~lib/string/String|null> (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__ne - if - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 256 - i32.const 64 - i32.const 14 - i32.const 35 - call $~lib/builtins/abort - unreachable - end - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $NonNullable/assertNonNull<~lib/string/String> - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $start:NonNullable (local $0 i32) (local $1 i32) diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.release.wat similarity index 58% rename from tests/compiler/NonNullable.optimized.wat rename to tests/compiler/NonNullable.release.wat index ad2608bb49..65ae3cc81a 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.release.wat @@ -142,124 +142,10 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1324 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1136 - i32.store - local.get $0 - i32.const 1136 - i32.store offset=4 - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1168 - i32.store - local.get $0 - i32.const 1168 - i32.store offset=4 - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1248 - i32.store offset=8 - local.get $0 - i32.const 1248 - i32.store - i32.const 1248 - i32.const 0 - call $~lib/string/String.__eq - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1248 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1324 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1248 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - i32.const 1248 - i32.const 0 - call $~lib/string/String.__eq - br_if $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + global.get $~lib/memory/__stack_pointer + i32.const 1324 + i32.lt_s + if i32.const 17728 i32.const 17776 i32.const 1 @@ -267,6 +153,100 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1136 + i32.store + local.get $0 + i32.const 1136 + i32.store offset=4 + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 1168 + i32.store offset=4 + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1248 + i32.store offset=8 + local.get $0 + i32.const 1248 + i32.store + block $folding-inner0 + i32.const 1248 + i32.const 0 + call $~lib/string/String.__eq + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + i32.const 1248 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 1248 + i32.const 0 + call $~lib/string/String.__eq + br_if $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end i32.const 0 i32.const 1088 i32.const 9 diff --git a/tests/compiler/ReturnType.untouched.wat b/tests/compiler/ReturnType.debug.wat similarity index 100% rename from tests/compiler/ReturnType.untouched.wat rename to tests/compiler/ReturnType.debug.wat diff --git a/tests/compiler/ReturnType.optimized.wat b/tests/compiler/ReturnType.release.wat similarity index 100% rename from tests/compiler/ReturnType.optimized.wat rename to tests/compiler/ReturnType.release.wat diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.debug.wat similarity index 100% rename from tests/compiler/abi.untouched.wat rename to tests/compiler/abi.debug.wat diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.release.wat similarity index 100% rename from tests/compiler/abi.optimized.wat rename to tests/compiler/abi.release.wat diff --git a/tests/compiler/asc-constants.debug.wat b/tests/compiler/asc-constants.debug.wat new file mode 100644 index 0000000000..9ef4c1f725 --- /dev/null +++ b/tests/compiler/asc-constants.debug.wat @@ -0,0 +1,85 @@ +(module + (type $none_=>_none (func)) + (global $~lib/native/ASC_TARGET i32 (i32.const 1)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/native/ASC_MEMORY_BASE i32 (i32.const 0)) + (global $~lib/native/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_BULK_MEMORY i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_THREADS i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_EXCEPTION_HANDLING i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_MULTI_VALUE i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_GC i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_MEMORY64 i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_FUNCTION_REFERENCES i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_RELAXED_SIMD i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_EXTENDED_CONST i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) + (memory $0 0) + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:asc-constants + i32.const 1 + drop + i32.const 2 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + ) + (func $~start + call $start:asc-constants + ) +) diff --git a/tests/compiler/asc-constants.optimized.wat b/tests/compiler/asc-constants.release.wat similarity index 100% rename from tests/compiler/asc-constants.optimized.wat rename to tests/compiler/asc-constants.release.wat diff --git a/tests/compiler/asc-constants.ts b/tests/compiler/asc-constants.ts index 34716332ba..d4a59697a7 100644 --- a/tests/compiler/asc-constants.ts +++ b/tests/compiler/asc-constants.ts @@ -17,6 +17,9 @@ ASC_FEATURE_REFERENCE_TYPES; ASC_FEATURE_MULTI_VALUE; ASC_FEATURE_GC; ASC_FEATURE_MEMORY64; +ASC_FEATURE_FUNCTION_REFERENCES; +ASC_FEATURE_RELAXED_SIMD; +ASC_FEATURE_EXTENDED_CONST; // versions vary between builds isDefined(ASC_VERSION_MAJOR); diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat deleted file mode 100644 index be45b662f8..0000000000 --- a/tests/compiler/asc-constants.untouched.wat +++ /dev/null @@ -1,76 +0,0 @@ -(module - (type $none_=>_none (func)) - (global $~lib/ASC_TARGET i32 (i32.const 1)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/ASC_MEMORY_BASE i32 (i32.const 0)) - (global $~lib/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 1)) - (global $~lib/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) - (global $~lib/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_BULK_MEMORY i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_THREADS i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_EXCEPTION_HANDLING i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_MULTI_VALUE i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_GC i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_MEMORY64 i32 (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 8)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) - (global $~lib/memory/__heap_base i32 (i32.const 16392)) - (memory $0 0) - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $start:asc-constants - i32.const 1 - drop - i32.const 2 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - ) - (func $~start - call $start:asc-constants - ) -) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.debug.wat similarity index 100% rename from tests/compiler/assert-nonnull.untouched.wat rename to tests/compiler/assert-nonnull.debug.wat diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.release.wat similarity index 100% rename from tests/compiler/assert-nonnull.optimized.wat rename to tests/compiler/assert-nonnull.release.wat diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.debug.wat similarity index 100% rename from tests/compiler/assert.untouched.wat rename to tests/compiler/assert.debug.wat diff --git a/tests/compiler/assert.optimized.wat b/tests/compiler/assert.release.wat similarity index 100% rename from tests/compiler/assert.optimized.wat rename to tests/compiler/assert.release.wat diff --git a/tests/compiler/bigint-integration.debug.wat b/tests/compiler/bigint-integration.debug.wat new file mode 100644 index 0000000000..5d3e94cfba --- /dev/null +++ b/tests/compiler/bigint-integration.debug.wat @@ -0,0 +1,59 @@ +(module + (type $none_=>_i64 (func (result i64))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (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 $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 16460)) + (global $~lib/memory/__heap_base i32 (i32.const 16460)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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") + (table $0 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 $start:bigint-integration + global.get $bigint-integration/externalValue + i64.const 9007199254740991 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $bigint-integration/getExternalValue + global.get $bigint-integration/externalValue + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $bigint-integration/getInternalValue (result i64) + global.get $bigint-integration/internalValue + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:bigint-integration + ) +) diff --git a/tests/compiler/features/js-bigint-integration.js b/tests/compiler/bigint-integration.js similarity index 72% rename from tests/compiler/features/js-bigint-integration.js rename to tests/compiler/bigint-integration.js index 7519fea873..67be951133 100644 --- a/tests/compiler/features/js-bigint-integration.js +++ b/tests/compiler/bigint-integration.js @@ -1,15 +1,16 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { const externalValue = 9007199254740991n; - imports["js-bigint-integration"] = { + imports["bigint-integration"] = { externalValue, getExternalValue: function() { return externalValue; }, }; -}; -exports.postInstantiate = function(instance) { +} + +export function postInstantiate(instance) { const exports = instance.exports; const internalValue = exports.internalValue; if (internalValue != 9007199254740991n) throw Error("unexpected value"); if (exports.getInternalValue() != internalValue) throw Error("unexpected value"); -}; +} diff --git a/tests/compiler/bigint-integration.json b/tests/compiler/bigint-integration.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/bigint-integration.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/bigint-integration.release.wat b/tests/compiler/bigint-integration.release.wat new file mode 100644 index 0000000000..18689520d7 --- /dev/null +++ b/tests/compiler/bigint-integration.release.wat @@ -0,0 +1,50 @@ +(module + (type $none_=>_i64 (func (result i64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) + (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 $bigint-integration/internalValue i64 (i64.const 9007199254740991)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\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") + (export "internalValue" (global $bigint-integration/internalValue)) + (export "getInternalValue" (func $bigint-integration/getInternalValue)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $bigint-integration/getInternalValue (result i64) + i64.const 9007199254740991 + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $bigint-integration/externalValue + i64.const 9007199254740991 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $bigint-integration/getExternalValue + global.get $bigint-integration/externalValue + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/features/js-bigint-integration.ts b/tests/compiler/bigint-integration.ts similarity index 100% rename from tests/compiler/features/js-bigint-integration.ts rename to tests/compiler/bigint-integration.ts diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.debug.wat similarity index 99% rename from tests/compiler/binary.untouched.wat rename to tests/compiler/binary.debug.wat index 4ba77b7887..0b41939ff6 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.debug.wat @@ -5,7 +5,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $binary/b (mut i32) (i32.const 0)) (global $binary/i (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $binary/I (mut i64) (i64.const 0)) (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) (global $binary/f (mut f32) (f32.const 0)) @@ -2654,7 +2654,7 @@ f64.convert_i64_s f64.const 1 call $~lib/math/NativeMath.pow - i64.trunc_f64_s + i64.trunc_sat_f64_s global.set $binary/I global.get $binary/I i64.const 1 diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.release.wat similarity index 70% rename from tests/compiler/binary.optimized.wat rename to tests/compiler/binary.release.wat index 36ab116b87..bbe6f77e1c 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.release.wat @@ -64,76 +64,7 @@ (data (i32.const 2801) " \06?\07\1b\b5\bfW^\c6a[\02\1f=\00\00\00\00\00@\f1?") (data (i32.const 2833) "\e0\1b\96\d7A\b3\bf\df\13\f9\cc\da^,=\00\00\00\00\00@\f1?") (data (i32.const 2865) "\e0\1b\96\d7A\b3\bf\df\13\f9\cc\da^,=\00\00\00\00\00 \f1?") - (data (i32.const 2897) "\80\a3\ee6e\b1\bf\t\a3\8fv^|\14=\00\00\00\00\00\00\f1?") - (data (i32.const 2929) "\80\11\c00\n\af\bf\91\8e6\83\9eY-=\00\00\00\00\00\00\f1?") - (data (i32.const 2961) "\80\11\c00\n\af\bf\91\8e6\83\9eY-=\00\00\00\00\00\e0\f0?") - (data (i32.const 2993) "\80\19q\ddB\ab\bfLp\d6\e5z\82\1c=\00\00\00\00\00\e0\f0?") - (data (i32.const 3025) "\80\19q\ddB\ab\bfLp\d6\e5z\82\1c=\00\00\00\00\00\c0\f0?") - (data (i32.const 3057) "\c02\f6Xt\a7\bf\ee\a1\f24F\fc,\bd\00\00\00\00\00\c0\f0?") - (data (i32.const 3089) "\c02\f6Xt\a7\bf\ee\a1\f24F\fc,\bd\00\00\00\00\00\a0\f0?") - (data (i32.const 3121) "\c0\fe\b9\87\9e\a3\bf\aa\fe&\f5\b7\02\f5<\00\00\00\00\00\a0\f0?") - (data (i32.const 3153) "\c0\fe\b9\87\9e\a3\bf\aa\fe&\f5\b7\02\f5<\00\00\00\00\00\80\f0?") - (data (i32.const 3186) "x\0e\9b\82\9f\bf\e4\t~|&\80)\bd\00\00\00\00\00\80\f0?") - (data (i32.const 3218) "x\0e\9b\82\9f\bf\e4\t~|&\80)\bd\00\00\00\00\00`\f0?") - (data (i32.const 3249) "\80\d5\07\1b\b9\97\bf9\a6\fa\93T\8d(\bd\00\00\00\00\00@\f0?") - (data (i32.const 3282) "\fc\b0\a8\c0\8f\bf\9c\a6\d3\f6|\1e\df\bc\00\00\00\00\00@\f0?") - (data (i32.const 3314) "\fc\b0\a8\c0\8f\bf\9c\a6\d3\f6|\1e\df\bc\00\00\00\00\00 \f0?") - (data (i32.const 3346) "\10k*\e0\7f\bf\e4@\da\0d?\e2\19\bd\00\00\00\00\00 \f0?") - (data (i32.const 3378) "\10k*\e0\7f\bf\e4@\da\0d?\e2\19\bd\00\00\00\00\00\00\f0?") - (data (i32.const 3430) "\f0?") - (data (i32.const 3461) "\c0\ef?") - (data (i32.const 3474) "\89u\15\10\80?\e8+\9d\99k\c7\10\bd\00\00\00\00\00\80\ef?") - (data (i32.const 3505) "\80\93XV \90?\d2\f7\e2\06[\dc#\bd\00\00\00\00\00@\ef?") - (data (i32.const 3538) "\c9(%I\98?4\0cZ2\ba\a0*\bd\00\00\00\00\00\00\ef?") - (data (i32.const 3569) "@\e7\89]A\a0?S\d7\f1\\\c0\11\01=\00\00\00\00\00\c0\ee?") - (data (i32.const 3602) ".\d4\aef\a4?(\fd\bdus\16,\bd\00\00\00\00\00\80\ee?") - (data (i32.const 3633) "\c0\9f\14\aa\94\a8?}&Z\d0\95y\19\bd\00\00\00\00\00@\ee?") - (data (i32.const 3665) "\c0\dd\cds\cb\ac?\07(\d8G\f2h\1a\bd\00\00\00\00\00 \ee?") - (data (i32.const 3697) "\c0\06\c01\ea\ae?{;\c9O>\11\0e\bd\00\00\00\00\00\e0\ed?") - (data (i32.const 3729) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") - (data (i32.const 3761) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") - (data (i32.const 3793) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") - (data (i32.const 3825) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") - (data (i32.const 3857) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") - (data (i32.const 3889) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") - (data (i32.const 3921) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") - (data (i32.const 3953) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") - (data (i32.const 3985) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") - (data (i32.const 4017) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") - (data (i32.const 4049) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") - (data (i32.const 4081) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") - (data (i32.const 4113) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") - (data (i32.const 4145) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") - (data (i32.const 4177) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") - (data (i32.const 4209) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") - (data (i32.const 4241) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") - (data (i32.const 4273) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") - (data (i32.const 4306) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") - (data (i32.const 4338) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") - (data (i32.const 4369) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") - (data (i32.const 4401) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") - (data (i32.const 4433) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") - (data (i32.const 4465) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") - (data (i32.const 4497) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") - (data (i32.const 4529) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") - (data (i32.const 4562) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") - (data (i32.const 4593) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") - (data (i32.const 4625) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") - (data (i32.const 4657) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") - (data (i32.const 4689) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") - (data (i32.const 4721) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") - (data (i32.const 4753) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") - (data (i32.const 4785) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") - (data (i32.const 4817) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") - (data (i32.const 4849) "`\d3\e1\f1\14\d3?\b8\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\0dV]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\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") (data (i32.const 7168) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") (data (i32.const 7430) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts new file mode 100644 index 0000000000..a9d795fee1 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -0,0 +1,154 @@ +/** bindings/esm/plainGlobal */ +export declare const plainGlobal: { + /** @type `i32` */ + get value(): number +}; +/** bindings/esm/plainMutableGlobal */ +export declare const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** bindings/esm/stringGlobal */ +export declare const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** bindings/esm/mutableStringGlobal */ +export declare const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); +}; +/** bindings/esm/Enum */ +export declare enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** bindings/esm/ConstEnum */ +export declare enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ +export declare function plainFunction(a: number, b: number): number; +/** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ +export declare function plainFunction64(a: bigint, b: bigint): bigint; +/** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; +/** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunction(a: string, b: string): string; +/** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunctionOptional(a: string, b?: string): string; +/** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ +export declare function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; +/** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ +export declare function arrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ +export declare function objectFunction(a: __Record8, b: __Record8): __Record8; +/** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ +export declare function newInternref(): __Internref11; +/** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ +export declare function internrefFunction(a: __Internref11, b: __Internref11): __Internref11; +/** bindings/esm/PlainObject */ +declare interface __Record8 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref11 extends Number { + private __nominal11: symbol; +} diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js new file mode 100644 index 0000000000..639841f351 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.js @@ -0,0 +1,379 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.assign(Object.create(globalThis), imports.env || {}, { + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log": ( + // ~lib/bindings/dom/Math.log(f64) => f64 + Math.log + ), + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: externref + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + 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}`); + })(); + }, + }), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b) || __notnull(); + try { + return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b) || __notnull(); + try { + return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord8(a) || __notnull()); + b = __lowerRecord8(b) || __notnull(); + try { + return __liftRecord8(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + }, exports); + function __lowerRecord8(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 8)); + new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; + new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; + new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; + new BigInt64Array(memory.buffer)[pointer + 8 >>> 3] = value.d || 0n; + new Uint8Array(memory.buffer)[pointer + 16 >>> 0] = value.e; + new Uint16Array(memory.buffer)[pointer + 18 >>> 1] = value.f; + new Uint32Array(memory.buffer)[pointer + 20 >>> 2] = value.g; + new BigUint64Array(memory.buffer)[pointer + 24 >>> 3] = value.h || 0n; + new Int32Array(memory.buffer)[pointer + 32 >>> 2] = value.i; + new Uint32Array(memory.buffer)[pointer + 36 >>> 2] = value.j; + new Uint8Array(memory.buffer)[pointer + 40 >>> 0] = value.k ? 1 : 0; + new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; + new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; + new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 9, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 10, 2, value.p); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord8(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: new Int8Array(memory.buffer)[pointer + 0 >>> 0], + b: new Int16Array(memory.buffer)[pointer + 2 >>> 1], + c: new Int32Array(memory.buffer)[pointer + 4 >>> 2], + d: new BigInt64Array(memory.buffer)[pointer + 8 >>> 3], + e: new Uint8Array(memory.buffer)[pointer + 16 >>> 0], + f: new Uint16Array(memory.buffer)[pointer + 18 >>> 1], + g: new Uint32Array(memory.buffer)[pointer + 20 >>> 2], + h: new BigUint64Array(memory.buffer)[pointer + 24 >>> 3], + i: new Int32Array(memory.buffer)[pointer + 32 >>> 2], + j: new Uint32Array(memory.buffer)[pointer + 36 >>> 2], + k: new Uint8Array(memory.buffer)[pointer + 40 >>> 0] != 0, + l: new Float32Array(memory.buffer)[pointer + 44 >>> 2], + m: new Float64Array(memory.buffer)[pointer + 48 >>> 3], + n: __liftString(new Uint32Array(memory.buffer)[pointer + 56 >>> 2]), + o: __liftTypedArray(Uint8Array, new Uint32Array(memory.buffer)[pointer + 60 >>> 2]), + p: __liftArray(pointer => __liftString(new Uint32Array(memory.buffer)[pointer >>> 2]), 2, new Uint32Array(memory.buffer)[pointer + 64 >>> 2]), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 0) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 1) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + memoryU32 = new Uint32Array(memory.buffer), + dataStart = memoryU32[pointer + 4 >>> 2], + length = memoryU32[pointer + 12 >>> 2], + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + memoryU32[header + 12 >>> 2] = length; + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + const memoryU32 = new Uint32Array(memory.buffer); + return new constructor( + memory.buffer, + memoryU32[pointer + 4 >>> 2], + memoryU32[pointer + 8 >>> 2] / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__new(12, id) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + return buffer; + } + const registry = new FinalizationRegistry(__release); + class Internref extends Number {} + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + exports._start(); + return adaptedExports; +} +export const { + plainGlobal, + plainMutableGlobal, + stringGlobal, + mutableStringGlobal, + Enum, + ConstEnum, + plainFunction, + plainFunction64, + bufferFunction, + stringFunction, + stringFunctionOptional, + typedarrayFunction, + staticarrayFunction, + arrayFunction, + objectFunction, + newInternref, + internrefFunction +} = await (async url => instantiate( + await ( + typeof globalThis.fetch === "function" + ? WebAssembly.compileStreaming(globalThis.fetch(url)) + : WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)) + ), { + } +))(new URL("esm.debug.wasm", import.meta.url)); diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat new file mode 100644 index 0000000000..36c49932a1 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.wat @@ -0,0 +1,4215 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f64_=>_none (func (param i32 f64))) + (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)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 32)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 64)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.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_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1024)) + (global $~lib/memory/__data_end i32 (i32.const 1124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17508)) + (global $~lib/memory/__heap_base i32 (i32.const 17508)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 684) "\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 (i32.const 716) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 780) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 956) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1024) "\0c\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 496 + i32.const 560 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 368 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 640 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 368 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 304 + i32.const 640 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 304 + i32.const 368 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__concat + ) + (func $bindings/esm/stringFunctionOptional (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__concat + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + ) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + ) + (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 448 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 1164 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 1294 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 496 + i32.const 800 + i32.const 118 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 496 + i32.const 800 + i32.const 133 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__uset + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 496 + i32.const 864 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 864 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 496 + i32.const 864 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $bindings/esm/PlainObject#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 + ) + (func $bindings/esm/PlainObject#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=2 + ) + (func $bindings/esm/PlainObject#set:c (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $bindings/esm/PlainObject#set:d (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=8 + ) + (func $bindings/esm/PlainObject#set:e (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=16 + ) + (func $bindings/esm/PlainObject#set:f (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=18 + ) + (func $bindings/esm/PlainObject#set:g (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $bindings/esm/PlainObject#set:h (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=24 + ) + (func $bindings/esm/PlainObject#set:i (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=32 + ) + (func $bindings/esm/PlainObject#set:j (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=36 + ) + (func $bindings/esm/PlainObject#set:k (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=40 + ) + (func $bindings/esm/PlainObject#set:l (param $0 i32) (param $1 f32) + local.get $0 + local.get $1 + f32.store offset=44 + ) + (func $bindings/esm/PlainObject#set:m (param $0 i32) (param $1 f64) + local.get $0 + local.get $1 + f64.store offset=48 + ) + (func $bindings/esm/PlainObject#set:n (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=56 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:o (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=60 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:p (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=64 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/newInternref (result i32) + i32.const 0 + call $bindings/esm/NonPlainObject#constructor + ) + (func $bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 912 + i32.const 368 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 976 + i32.const 368 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + (local $0 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 + local.set $0 + local.get $0 + 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 + local.set $0 + local.get $0 + 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 $~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 496 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 912 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 976 + 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=56 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=60 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=64 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + 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 $bindings/esm/NonPlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + 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/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 + local.get $0 + local.get $1 + call $~lib/array/Array~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 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~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 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17536 + i32.const 17584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:bindings/esm + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 96 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 128 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + global.get $bindings/esm/immutableGlobal + drop + global.get $bindings/esm/immutableGlobalNested + drop + call $bindings/esm/Date_getTimezoneOffset + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 192 + i32.const 240 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $2 + local.get $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + local.get $3 + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $4 + local.get $2 + i32.add + local.get $1 + local.get $3 + memory.copy + local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + local.get $2 + local.get $3 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + i32.const 704 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $5 + local.get $2 + i32.add + local.get $1 + local.get $3 + memory.copy + 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 + ) + (func $bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional + 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/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 240 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $0 + 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/typedarray/Uint64Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.add + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/typedarray/Int16Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/typedarray/Float32Array#__get + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/staticarray/StaticArray#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 800 + i32.const 91 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.get $1 + call $~lib/staticarray/StaticArray#get:length + i32.add + call $~lib/staticarray/StaticArray#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $1 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 864 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $5 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/array/Array#get:length + local.get $1 + call $~lib/array/Array#get:length + i32.add + call $~lib/array/Array#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/array/Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $bindings/esm/PlainObject#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:a + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:b + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:c + local.get $0 + i64.const 0 + call $bindings/esm/PlainObject#set:d + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:e + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:f + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:g + local.get $0 + i64.const 0 + call $bindings/esm/PlainObject#set:h + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:i + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:j + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:k + local.get $0 + f32.const 0 + call $bindings/esm/PlainObject#set:l + local.get $0 + f64.const 0 + call $bindings/esm/PlainObject#set:m + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:n + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:o + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:p + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $bindings/esm/PlainObject#constructor + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load8_s + local.get $1 + i32.load8_s + i32.add + call $bindings/esm/PlainObject#set:a + local.get $2 + local.get $0 + i32.load16_s offset=2 + local.get $1 + i32.load16_s offset=2 + i32.add + call $bindings/esm/PlainObject#set:b + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $bindings/esm/NonPlainObject#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + 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/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/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 + i32.store + 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 + 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/bindings/esm.js b/tests/compiler/bindings/esm.js new file mode 100644 index 0000000000..b279d8e09d --- /dev/null +++ b/tests/compiler/bindings/esm.js @@ -0,0 +1,70 @@ +import assert from "assert"; + +export function preInstantiate(imports, exports) { + const env = imports.env ||= {}; + env["console.log"] = function() { /* stub */ }; + env["performance.timeOrigin"] = 42; + // env.mutableGlobal = new WebAssembly.Global({ value: "i32", mutable: true}, 42); +} + +// run only once on debug build +var ran = false; + +export async function postInstantiate(instance) { + if (ran) { + console.log(" skipped"); + return; + } + ran = true; + const exports = await import(new URL("esm.debug.js", import.meta.url)); + + assert.strictEqual(exports.plainGlobal.value, 1); + + assert.strictEqual(exports.plainMutableGlobal.value, 2); + exports.plainMutableGlobal.value = 3; + assert.strictEqual(exports.plainMutableGlobal.value, 3); + + assert.strictEqual(exports.stringGlobal.value, "a"); + + assert.strictEqual(exports.mutableStringGlobal.value, "b"); + exports.mutableStringGlobal.value = "c"; + assert.strictEqual(exports.mutableStringGlobal.value, "c"); + + assert.strictEqual(exports.Enum.ONE, 1); + assert.strictEqual(exports.Enum[1], "ONE"); + assert.strictEqual(exports.Enum.TWO, 2); + assert.strictEqual(exports.Enum[2], "TWO"); + + assert.strictEqual(exports.plainFunction(1, 2), 3); + + { + let ab1 = new Uint8Array([1, 2, 3]).buffer; + let ab2 = new Uint8Array([4, 5, 6]).buffer; + let ab3 = exports.bufferFunction(ab1, ab2); + assert.deepStrictEqual(new Uint8Array(ab3), new Uint8Array([1, 2, 3, 4, 5, 6])); + } + + assert.strictEqual(exports.stringFunction("a", "b"), "ab"); + + { + let i16 = new Int16Array([1,2,3]); + let f32 = new Float32Array([4,5,6]); + let u64 = exports.typedarrayFunction(i16, f32); + assert.deepStrictEqual(u64, new BigUint64Array([1n, 2n, 3n, 4n, 5n, 6n])); + } + + assert.deepStrictEqual(exports.staticarrayFunction([1, 2, 3], [4, 5, 6]), [1, 2, 3, 4, 5, 6]); + + assert.deepStrictEqual(exports.arrayFunction([1, 2, 3], [4, 5, 6]), [1, 2, 3, 4, 5, 6]); + + { + let obj = exports.objectFunction({ a: 1, b: 2 }, { a: 3, b: 4 }); + assert.strictEqual(obj.a, 4); + assert.strictEqual(obj.b, 6); + } + + { + let ref = exports.newInternref(); + assert.strictEqual(+exports.internrefFunction(ref, ref), +ref); + } +} diff --git a/tests/compiler/bindings/esm.json b/tests/compiler/bindings/esm.json new file mode 100644 index 0000000000..f5b2dbffd5 --- /dev/null +++ b/tests/compiler/bindings/esm.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + "--exportRuntime", + "--exportStart _start", + "--bindings esm" + ], + "features": [ + "reference-types" + ] +} diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts new file mode 100644 index 0000000000..a9d795fee1 --- /dev/null +++ b/tests/compiler/bindings/esm.release.d.ts @@ -0,0 +1,154 @@ +/** bindings/esm/plainGlobal */ +export declare const plainGlobal: { + /** @type `i32` */ + get value(): number +}; +/** bindings/esm/plainMutableGlobal */ +export declare const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** bindings/esm/stringGlobal */ +export declare const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** bindings/esm/mutableStringGlobal */ +export declare const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); +}; +/** bindings/esm/Enum */ +export declare enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** bindings/esm/ConstEnum */ +export declare enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ +export declare function plainFunction(a: number, b: number): number; +/** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ +export declare function plainFunction64(a: bigint, b: bigint): bigint; +/** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; +/** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunction(a: string, b: string): string; +/** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunctionOptional(a: string, b?: string): string; +/** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ +export declare function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; +/** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ +export declare function arrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ +export declare function objectFunction(a: __Record8, b: __Record8): __Record8; +/** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ +export declare function newInternref(): __Internref11; +/** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ +export declare function internrefFunction(a: __Internref11, b: __Internref11): __Internref11; +/** bindings/esm/PlainObject */ +declare interface __Record8 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref11 extends Number { + private __nominal11: symbol; +} diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js new file mode 100644 index 0000000000..4f5fde306c --- /dev/null +++ b/tests/compiler/bindings/esm.release.js @@ -0,0 +1,379 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.assign(Object.create(globalThis), imports.env || {}, { + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log": ( + // ~lib/bindings/dom/Math.log(f64) => f64 + Math.log + ), + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: externref + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + 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}`); + })(); + }, + }), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b) || __notnull(); + try { + return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b) || __notnull(); + try { + return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord8(a) || __notnull()); + b = __lowerRecord8(b) || __notnull(); + try { + return __liftRecord8(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + }, exports); + function __lowerRecord8(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 8)); + new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; + new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; + new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; + new BigInt64Array(memory.buffer)[pointer + 8 >>> 3] = value.d || 0n; + new Uint8Array(memory.buffer)[pointer + 16 >>> 0] = value.e; + new Uint16Array(memory.buffer)[pointer + 18 >>> 1] = value.f; + new Uint32Array(memory.buffer)[pointer + 20 >>> 2] = value.g; + new BigUint64Array(memory.buffer)[pointer + 24 >>> 3] = value.h || 0n; + new Int32Array(memory.buffer)[pointer + 32 >>> 2] = value.i; + new Uint32Array(memory.buffer)[pointer + 36 >>> 2] = value.j; + new Uint8Array(memory.buffer)[pointer + 40 >>> 0] = value.k ? 1 : 0; + new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; + new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; + new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 9, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 10, 2, value.p); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord8(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: new Int8Array(memory.buffer)[pointer + 0 >>> 0], + b: new Int16Array(memory.buffer)[pointer + 2 >>> 1], + c: new Int32Array(memory.buffer)[pointer + 4 >>> 2], + d: new BigInt64Array(memory.buffer)[pointer + 8 >>> 3], + e: new Uint8Array(memory.buffer)[pointer + 16 >>> 0], + f: new Uint16Array(memory.buffer)[pointer + 18 >>> 1], + g: new Uint32Array(memory.buffer)[pointer + 20 >>> 2], + h: new BigUint64Array(memory.buffer)[pointer + 24 >>> 3], + i: new Int32Array(memory.buffer)[pointer + 32 >>> 2], + j: new Uint32Array(memory.buffer)[pointer + 36 >>> 2], + k: new Uint8Array(memory.buffer)[pointer + 40 >>> 0] != 0, + l: new Float32Array(memory.buffer)[pointer + 44 >>> 2], + m: new Float64Array(memory.buffer)[pointer + 48 >>> 3], + n: __liftString(new Uint32Array(memory.buffer)[pointer + 56 >>> 2]), + o: __liftTypedArray(Uint8Array, new Uint32Array(memory.buffer)[pointer + 60 >>> 2]), + p: __liftArray(pointer => __liftString(new Uint32Array(memory.buffer)[pointer >>> 2]), 2, new Uint32Array(memory.buffer)[pointer + 64 >>> 2]), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 0) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 1) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + memoryU32 = new Uint32Array(memory.buffer), + dataStart = memoryU32[pointer + 4 >>> 2], + length = memoryU32[pointer + 12 >>> 2], + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + memoryU32[header + 12 >>> 2] = length; + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + const memoryU32 = new Uint32Array(memory.buffer); + return new constructor( + memory.buffer, + memoryU32[pointer + 4 >>> 2], + memoryU32[pointer + 8 >>> 2] / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__new(12, id) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + return buffer; + } + const registry = new FinalizationRegistry(__release); + class Internref extends Number {} + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + exports._start(); + return adaptedExports; +} +export const { + plainGlobal, + plainMutableGlobal, + stringGlobal, + mutableStringGlobal, + Enum, + ConstEnum, + plainFunction, + plainFunction64, + bufferFunction, + stringFunction, + stringFunctionOptional, + typedarrayFunction, + staticarrayFunction, + arrayFunction, + objectFunction, + newInternref, + internrefFunction +} = await (async url => instantiate( + await ( + typeof globalThis.fetch === "function" + ? WebAssembly.compileStreaming(globalThis.fetch(url)) + : WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)) + ), { + } +))(new URL("esm.release.wasm", import.meta.url)); diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/bindings/esm.release.wat similarity index 54% rename from tests/compiler/issues/1699.optimized.wat rename to tests/compiler/bindings/esm.release.wat index f883c01f4b..16ce5b8eaa 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -1,12 +1,32 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 1056)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 1088)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) (global $~lib/rt/itcms/total (mut 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,40 +37,107 @@ (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 18140)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2048)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18532)) + (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1084) ",") - (data (i32.const 1096) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\02\00\00\00a") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\02\00\00\00b") + (data (i32.const 1100) "\1c") + (data (i32.const 1112) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") (data (i32.const 1132) "<") - (data (i32.const 1144) "\01\00\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 (i32.const 1196) "<") - (data (i32.const 1208) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1324) "<") - (data (i32.const 1336) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1388) ",") - (data (i32.const 1400) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1468) "<") - (data (i32.const 1480) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1532) "|") - (data (i32.const 1544) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 1660) ",") - (data (i32.const 1672) "\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s") - (data (i32.const 1712) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1740) " \00\00\00\00\00\00\00\02A") + (data (i32.const 1144) "\01\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 (i32.const 1196) ",") + (data (i32.const 1208) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1244) "<") + (data (i32.const 1256) "\01\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 (i32.const 1308) "<") + (data (i32.const 1320) "\01\00\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 (i32.const 1372) "<") + (data (i32.const 1384) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1500) "<") + (data (i32.const 1512) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1564) ",") + (data (i32.const 1576) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1644) "<") + (data (i32.const 1656) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1708) "\1c") + (data (i32.const 1720) "\01") + (data (i32.const 1740) "<") + (data (i32.const 1752) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1804) "<") + (data (i32.const 1816) "\01\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 (i32.const 1868) ",") + (data (i32.const 1880) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1916) "<") + (data (i32.const 1928) "\01\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 (i32.const 1980) "<") + (data (i32.const 1992) "\01\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 (i32.const 2048) "\0c\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2076) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\02\t") + (data (i32.const 2124) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) - (start $~start) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1344 - call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1552 + global.get $bindings/esm/mutableStringGlobal + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + i32.const 1520 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1152 + i32.const 1216 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1328 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1936 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 2000 call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -71,7 +158,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 1392 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -90,116 +177,119 @@ end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/iter local.get $0 - i32.eq + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if + i32.const 0 + local.get $0 + i32.const 18532 + i32.lt_u local.get $0 i32.load offset=8 - local.tee $1 + select i32.eqz if i32.const 0 - i32.const 1216 - i32.const 147 - i32.const 30 + i32.const 1392 + i32.const 127 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $1 - global.set $~lib/rt/itcms/iter + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18140 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/iter + local.get $0 + i32.eq + if local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 - i32.const 1216 - i32.const 131 - i32.const 16 + i32.const 1392 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 + global.set $~lib/rt/itcms/iter end + local.get $0 + call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) i32.const 1 else - i32.const 1712 + i32.const 2048 i32.load - local.get $1 + local.get $2 i32.lt_u if - i32.const 1344 - i32.const 1408 + i32.const 1520 + i32.const 1584 i32.const 22 i32.const 28 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl - i32.const 1716 + i32.const 2052 i32.add i32.load i32.const 32 i32.and end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.eqz i32.const 2 @@ -208,17 +298,17 @@ i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) @@ -235,7 +325,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -249,7 +339,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -295,7 +385,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -385,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -399,7 +489,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -460,7 +550,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -493,7 +583,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -508,7 +598,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -559,7 +649,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -629,7 +719,7 @@ i32.gt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -654,7 +744,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -682,7 +772,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -753,10 +843,10 @@ if unreachable end - i32.const 18144 + i32.const 18544 i32.const 0 i32.store - i32.const 19712 + i32.const 20112 i32.const 0 i32.store loop $for-loop|0 @@ -767,7 +857,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 18144 + i32.const 18544 i32.add i32.const 0 i32.store offset=4 @@ -785,7 +875,7 @@ i32.add i32.const 2 i32.shl - i32.const 18144 + i32.const 18544 i32.add i32.const 0 i32.store offset=96 @@ -803,13 +893,13 @@ br $for-loop|0 end end - i32.const 18144 - i32.const 19716 + i32.const 18544 + i32.const 20116 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18144 + i32.const 18544 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -894,7 +984,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18140 + i32.const 18532 i32.lt_u if local.get $0 @@ -987,14 +1077,14 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 1392 i32.const 228 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 18140 + i32.const 18532 i32.lt_u if local.get $0 @@ -1017,7 +1107,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 18140 + i32.const 18532 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1046,7 +1136,7 @@ end if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1129,7 +1219,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1181,7 +1271,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1213,8 +1303,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1152 - i32.const 1216 + i32.const 1328 + i32.const 1392 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -1271,7 +1361,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1279,14 +1369,14 @@ i32.const 1073741820 i32.gt_u if - i32.const 1152 - i32.const 1488 + i32.const 1328 + i32.const 1664 i32.const 458 i32.const 29 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1299,7 +1389,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1307,7 +1397,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1318,16 +1408,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1338,16 +1428,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1355,7 +1445,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1363,14 +1453,14 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -1381,69 +1471,69 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 498 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1488 + i32.const 1664 i32.const 357 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1503,1568 +1593,1671 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 i32.add - local.tee $3 + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $2 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1 - i32.sub - i32.const 0 - i32.store8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 + memory.copy + local.get $2 local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.and - i32.const 24 i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 1164 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1824 + i32.const 118 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1824 + i32.const 133 + i32.const 41 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add local.get $2 + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1888 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + (local $6 i32) local.get $0 - i32.const 3 - i32.and - i32.eqz + i32.load offset=12 + local.get $1 + i32.le_u if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and + local.get $1 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.const 1520 + i32.const 1888 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $1 i32.const 1 - i32.and + i32.add + local.tee $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1216 + i32.const 1888 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select local.tee $4 + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select i32.const 2 - i32.add - local.set $1 + i32.shl + local.tee $3 local.get $3 local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 + i32.lt_u + select + local.tee $5 + local.get $0 + i32.load + local.tee $4 + i32.const 20 i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $5 + i32.store offset=16 + local.get $4 + local.set $3 + br $__inlined_func$~lib/rt/itcms/__renew end - br $break|2 + local.get $5 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + local.get $5 + local.get $6 + i32.load offset=16 + local.tee $6 + local.get $5 + local.get $6 + i32.lt_u + select + memory.copy end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 local.get $3 local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $3 if local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 + call $byn-split-outlined-A$~lib/rt/itcms/__link end end + local.get $0 + local.get $5 + i32.store offset=8 end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.const 16 - i32.and + i32.store + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 if local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add + i32.const 20 + i32.sub local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1936 + i32.const 1392 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + i32.or + i32.store offset=4 + local.get $3 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 2000 + i32.const 1392 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + call $~lib/rt/itcms/Object#makeGray + else local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace local.tee $0 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + global.get $~lib/rt/itcms/white local.get $0 + i32.or + i32.store offset=4 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.or + i32.store offset=4 local.get $0 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (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/esm/NonPlainObject + block $~lib/array/Array<~lib/string/String> + block $bindings/esm/PlainObject + block $~lib/staticarray/StaticArray + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=56 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=60 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=64 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + unreachable + end local.get $0 - i32.const 2 - i32.add + i32.load local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - local.get $2 - i32.const 8 - i32.and + local.get $0 + i32.load + local.tee $0 if local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + (local $0 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1120 + i32.store + i32.const 1120 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + i32.const 1152 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 18532 + 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 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 - i32.const 2 - i32.add - local.tee $0 + i32.store + local.get $2 local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 i32.add - local.tee $0 - local.get $1 - i32.const 2 + local.set $5 + local.get $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1264 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.store + local.get $5 local.get $0 - i32.const 2 + local.get $2 + memory.copy + local.get $2 + local.get $5 i32.add - local.tee $0 local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 local.get $3 - i32.const 2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $0 + global.set $~lib/memory/__stack_pointer + local.get $5 + return end - local.get $2 - i32.const 4 - i32.and + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store local.get $2 - i32.const 2 - i32.and - if + 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 $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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 + i32.store + local.get $2 local.get $1 - i32.load8_u - i32.store8 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + end local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $4 - i32.const 2 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $2 + i32.const 18560 + i32.const 18608 i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $3 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - i32.const 1073741820 - local.get $4 - i32.const 1073741820 - i32.lt_u - select - local.tee $4 - local.get $3 - i32.const 8 - local.get $3 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $3 - local.get $3 - local.get $4 - i32.lt_u - select - local.tee $9 - local.get $0 - i32.load - local.tee $7 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $9 - i32.store offset=16 - local.get $7 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $9 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $8 - local.get $9 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $3 - local.get $9 - i32.gt_u - select - local.set $10 - block $~lib/util/memory/memmove|inlined.0 - local.get $8 - local.tee $4 - local.get $7 - local.tee $3 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $4 - i32.sub - local.get $10 - i32.sub + 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 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 - local.get $10 - i32.const 1 - i32.shl + i32.store + local.get $2 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 8 i32.sub - i32.le_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.eqz if - local.get $4 - local.get $3 - local.get $10 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store end - local.get $3 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 local.get $4 + i32.const 134217727 i32.gt_u if - local.get $3 - i32.const 7 - i32.and - local.get $4 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $4 - i32.const 7 - i32.and - if - local.get $10 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $10 - i32.const 1 - i32.sub - local.set $10 - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $3 - local.tee $6 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $6 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $10 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $3 - i64.load - i64.store - local.get $10 - i32.const 8 - i32.sub - local.set $10 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $10 - if - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $3 - local.tee $6 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $6 - i32.load8_u - i32.store8 - local.get $10 - i32.const 1 - i32.sub - local.set $10 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and + i32.const 1216 + i32.const 1264 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + local.get $4 + if + local.get $2 local.get $4 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $4 - local.get $10 - i32.add - i32.const 7 - i32.and - if - local.get $10 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $10 - i32.const 1 - i32.sub - local.tee $10 - local.get $4 - i32.add - local.get $3 - local.get $10 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $10 - i32.const 8 - i32.ge_u - if - local.get $10 - i32.const 8 - i32.sub - local.tee $10 - local.get $4 - i32.add - local.get $3 - local.get $10 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $10 - if - local.get $10 - i32.const 1 - i32.sub - local.tee $10 - local.get $4 - i32.add - local.get $3 - local.get $10 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor end - local.get $8 + br $folding-inner1 end - local.tee $3 - local.get $7 - i32.ne - if - local.get $0 - local.get $3 - i32.store + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u local.get $3 - i32.store offset=4 + i32.gt_s + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $3 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 448 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i64.load16_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u local.get $3 + i32.gt_s if local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u local.get $3 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link + i32.add + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $3 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 1294 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end end - local.get $0 - local.get $9 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $2 - if - local.get $0 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $export:bindings/esm/staticarrayFunction (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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - 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-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/staticarrayFunction (result i32) + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store local.get $0 - i32.load - local.tee $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $4 + i32.const 268435455 + i32.gt_u if + i32.const 1216 + i32.const 1824 + i32.const 91 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $4 + i32.store + loop $for-loop|0 local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + local.get $0 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - return - end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.gt_s + if + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.add + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end end - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.set $1 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + local.get $4 + br $__inlined_func$bindings/esm/staticarrayFunction end + br $folding-inner1 end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - (local $0 i32) - (local $1 i32) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $__inlined_func$start:issues/1699 - memory.size - i32.const 16 - i32.shl - i32.const 18140 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace + (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/arrayFunction (result i32) + local.get $0 + local.set $3 local.get $2 - i32.const 16 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store - local.get $3 - if - local.get $2 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $6 + i32.const 0 + i32.store local.get $3 + i32.load offset=12 + local.get $1 + i32.load offset=12 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 32 - i32.store offset=8 - local.get $2 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.store - call $issues/1699/MultiAssignmentTest#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - i32.const 1 - local.get $1 - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/array/Array#__set - loop $for-loop|0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1216 + i32.const 1888 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 8 + local.get $5 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $4 + i32.store offset=4 local.get $2 - i32.load offset=12 local.get $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - call $issues/1699/MultiAssignmentTest#constructor - local.tee $1 - i32.store offset=12 + i32.store offset=8 + local.get $2 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + local.get $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $3 + i32.load offset=12 local.get $0 - i32.const 1 i32.gt_s if local.get $2 local.get $0 - local.get $1 - call $~lib/array/Array#__set + local.get $3 + local.get $0 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end - end - local.get $2 - i32.const 0 - call $~lib/array/Array#__get - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/array/Array#__get - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - i32.eq - if i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $1 + i32.load offset=12 + local.get $0 + i32.gt_s + if + local.get $2 + local.get $3 + i32.load offset=12 + local.get $0 + i32.add + local.get $1 + local.get $0 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/arrayFunction end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:issues/1699 + br $folding-inner1 end - i32.const 18160 - i32.const 18208 - 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 + return end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $issues/1699/MultiAssignmentTest#constructor (result i32) - (local $0 i32) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - if - i32.const 18160 - i32.const 18208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/objectFunction (result i32) + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 68 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store8 + local.get $3 + i32.const 0 + i32.store16 offset=2 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store8 offset=16 + local.get $3 + i32.const 0 + i32.store16 offset=18 + local.get $3 + i32.const 0 + i32.store offset=20 + local.get $3 + i64.const 0 + i64.store offset=24 + local.get $3 + i32.const 0 + i32.store offset=32 + local.get $3 + i32.const 0 + i32.store offset=36 + local.get $3 + i32.const 0 + i32.store8 offset=40 + local.get $3 + f32.const 0 + f32.store offset=44 + local.get $3 + f64.const 0 + f64.store offset=48 + local.get $3 + i32.const 0 + i32.store offset=56 + local.get $3 + i32.const 0 + i32.store offset=60 + local.get $3 + i32.const 0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.store + local.get $3 + local.get $0 + i32.load8_s + local.get $1 + i32.load8_s + i32.add + i32.store8 + local.get $3 + local.get $0 + i32.load16_s offset=2 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + br $__inlined_func$bindings/esm/objectFunction + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#__get (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 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1756 + i32.const 2148 i32.lt_s if - i32.const 18160 - i32.const 18208 + i32.const 18560 + i32.const 18608 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 i32.store - local.get $0 - i32.eqz - if - i32.const 1552 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 @@ -3088,13 +3281,12 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $0 i32.eqz if i32.const 0 - i32.const 1216 + i32.const 1392 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -3113,25 +3305,21 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 i32.load offset=4 i32.const 3 i32.and - local.tee $3 + local.tee $0 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 + local.get $0 i32.const 3 i32.eq i32.and diff --git a/tests/compiler/bindings/esm.ts b/tests/compiler/bindings/esm.ts new file mode 100644 index 0000000000..944e35d859 --- /dev/null +++ b/tests/compiler/bindings/esm.ts @@ -0,0 +1,138 @@ +export const plainGlobal = 1; + +export var plainMutableGlobal = 2; + +export const stringGlobal = "a"; + +export var mutableStringGlobal = "b"; + +export enum Enum { + ONE = 1, + TWO = 2, + THREE +}; + +export const enum ConstEnum { + ONE = 1, + TWO = 2, + THREE +} + +export function plainFunction(a: i32, b: i32): i32 { + return a + b; +} + +export function plainFunction64(a: i64, b: i64): i64 { + return a + b; +} + +export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer { + var aByteLength = a.byteLength; + var bByteLength = b.byteLength; + var out = new ArrayBuffer(aByteLength + bByteLength); + memory.copy(changetype(out), changetype(a), aByteLength); + memory.copy(changetype(out) + aByteLength, changetype(b), bByteLength); + return out; +} + +export function stringFunction(a: string, b: string): string { + return a + b; +} + +export function stringFunctionOptional(a: string, b: string = "b"): string { + return a + b; +} + +export function typedarrayFunction(a: Int16Array, b: Float32Array): Uint64Array { + var out = new Uint64Array(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + out[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + out[a.length + i] = b[i]; + } + return out; +} + +export function staticarrayFunction(a: StaticArray, b: StaticArray): StaticArray { + var c = new StaticArray(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + c[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + c[a.length + i] = b[i]; + } + return c; +} + +export function arrayFunction(a: Array, b: Array): Array { + var c = new Array(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + c[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + c[a.length + i] = b[i]; + } + return c; +} + +class PlainObject { + a: i8; + b: i16; + c: i32; + d: i64; + e: u8; + f: u16; + g: u32; + h: u64; + i: isize; + j: usize; + k: bool; + l: f32; + m: f64; + n: string | null; + o: Uint8Array | null; + p: Array | null; +} + +export function objectFunction(a: PlainObject, b: PlainObject): PlainObject { + let ref = new PlainObject(); + ref.a = a.a + b.a; + ref.b = a.b + b.b; + return ref; +} + +class NonPlainObject { + constructor() {} +} + +export function newInternref(): NonPlainObject { + return new NonPlainObject(); +} + +export function internrefFunction(a: NonPlainObject, b: NonPlainObject): NonPlainObject { + return a; +} + +trace("trace", 1, 42); + +import { console, Math } from "bindings/dom"; + +console.log("42 from console.log"); + +Math.log(Math.E); + +// @ts-ignore +@external("env", "globalThis") declare const immutableGlobal: externref; +immutableGlobal; + +// @ts-ignore +@external("env", "globalThis.globalThis") declare const immutableGlobalNested: externref; +immutableGlobalNested; + +// @ts-ignore +@external("env", "Date.getTimezoneOffset") +@external.js("return new Date().getTimezoneOffset();") +declare function Date_getTimezoneOffset(): i32; + +Date_getTimezoneOffset(); diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts new file mode 100644 index 0000000000..14bc6d53ec --- /dev/null +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -0,0 +1,160 @@ +declare namespace __AdaptedExports { + /** bindings/esm/plainGlobal */ + export const plainGlobal: { + /** @type `i32` */ + get value(): number + }; + /** bindings/esm/plainMutableGlobal */ + export const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); + }; + /** bindings/esm/stringGlobal */ + export const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string + }; + /** bindings/esm/mutableStringGlobal */ + export const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); + }; + /** bindings/esm/Enum */ + export enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** bindings/esm/ConstEnum */ + export enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ + export function plainFunction(a: number, b: number): number; + /** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ + export function plainFunction64(a: bigint, b: bigint): bigint; + /** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ + export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; + /** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunction(a: string, b: string): string; + /** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunctionOptional(a: string, b?: string): string; + /** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ + export function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; + /** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ + export function arrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ + export function objectFunction(a: __Record8, b: __Record8): __Record8; + /** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ + export function newInternref(): __Internref11; + /** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ + export function internrefFunction(a: __Internref11, b: __Internref11): __Internref11; +} +/** bindings/esm/PlainObject */ +declare interface __Record8 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref11 extends Number { + private __nominal11: symbol; +} +/** Instantiates the compiled WebAssembly module with the given imports. */ +export declare function instantiate(module: WebAssembly.Module, imports: { + env: unknown, +}): Promise; diff --git a/tests/compiler/bindings/raw.debug.js b/tests/compiler/bindings/raw.debug.js new file mode 100644 index 0000000000..dabcb032b9 --- /dev/null +++ b/tests/compiler/bindings/raw.debug.js @@ -0,0 +1,353 @@ +export async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.assign(Object.create(globalThis), imports.env || {}, { + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log": ( + // ~lib/bindings/dom/Math.log(f64) => f64 + Math.log + ), + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: externref + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + 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}`); + })(); + }, + }), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b) || __notnull(); + try { + return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b) || __notnull(); + try { + return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord8(a) || __notnull()); + b = __lowerRecord8(b) || __notnull(); + try { + return __liftRecord8(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + }, exports); + function __lowerRecord8(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 8)); + new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; + new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; + new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; + new BigInt64Array(memory.buffer)[pointer + 8 >>> 3] = value.d || 0n; + new Uint8Array(memory.buffer)[pointer + 16 >>> 0] = value.e; + new Uint16Array(memory.buffer)[pointer + 18 >>> 1] = value.f; + new Uint32Array(memory.buffer)[pointer + 20 >>> 2] = value.g; + new BigUint64Array(memory.buffer)[pointer + 24 >>> 3] = value.h || 0n; + new Int32Array(memory.buffer)[pointer + 32 >>> 2] = value.i; + new Uint32Array(memory.buffer)[pointer + 36 >>> 2] = value.j; + new Uint8Array(memory.buffer)[pointer + 40 >>> 0] = value.k ? 1 : 0; + new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; + new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; + new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 9, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 10, 2, value.p); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord8(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: new Int8Array(memory.buffer)[pointer + 0 >>> 0], + b: new Int16Array(memory.buffer)[pointer + 2 >>> 1], + c: new Int32Array(memory.buffer)[pointer + 4 >>> 2], + d: new BigInt64Array(memory.buffer)[pointer + 8 >>> 3], + e: new Uint8Array(memory.buffer)[pointer + 16 >>> 0], + f: new Uint16Array(memory.buffer)[pointer + 18 >>> 1], + g: new Uint32Array(memory.buffer)[pointer + 20 >>> 2], + h: new BigUint64Array(memory.buffer)[pointer + 24 >>> 3], + i: new Int32Array(memory.buffer)[pointer + 32 >>> 2], + j: new Uint32Array(memory.buffer)[pointer + 36 >>> 2], + k: new Uint8Array(memory.buffer)[pointer + 40 >>> 0] != 0, + l: new Float32Array(memory.buffer)[pointer + 44 >>> 2], + m: new Float64Array(memory.buffer)[pointer + 48 >>> 3], + n: __liftString(new Uint32Array(memory.buffer)[pointer + 56 >>> 2]), + o: __liftTypedArray(Uint8Array, new Uint32Array(memory.buffer)[pointer + 60 >>> 2]), + p: __liftArray(pointer => __liftString(new Uint32Array(memory.buffer)[pointer >>> 2]), 2, new Uint32Array(memory.buffer)[pointer + 64 >>> 2]), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 0) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 1) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + memoryU32 = new Uint32Array(memory.buffer), + dataStart = memoryU32[pointer + 4 >>> 2], + length = memoryU32[pointer + 12 >>> 2], + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + memoryU32[header + 12 >>> 2] = length; + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + const memoryU32 = new Uint32Array(memory.buffer); + return new constructor( + memory.buffer, + memoryU32[pointer + 4 >>> 2], + memoryU32[pointer + 8 >>> 2] / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__new(12, id) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + return buffer; + } + const registry = new FinalizationRegistry(__release); + class Internref extends Number {} + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + exports._start(); + return adaptedExports; +} diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat new file mode 100644 index 0000000000..415f7c15c1 --- /dev/null +++ b/tests/compiler/bindings/raw.debug.wat @@ -0,0 +1,4218 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f64_=>_none (func (param i32 f64))) + (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)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 32)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 64)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.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_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1024)) + (global $~lib/memory/__data_end i32 (i32.const 1124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17508)) + (global $~lib/memory/__heap_base i32 (i32.const 17508)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 684) "\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 (i32.const 716) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 780) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 956) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1024) "\0c\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (func $start:bindings/raw + call $start:bindings/esm + ) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 496 + i32.const 560 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 368 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 640 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 368 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 304 + i32.const 640 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 304 + i32.const 368 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__concat + ) + (func $bindings/esm/stringFunctionOptional (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__concat + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + ) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + ) + (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 448 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 1164 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 496 + i32.const 736 + i32.const 1294 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 496 + i32.const 800 + i32.const 118 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 496 + i32.const 800 + i32.const 133 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__uset + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 496 + i32.const 864 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 864 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 496 + i32.const 864 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $bindings/esm/PlainObject#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 + ) + (func $bindings/esm/PlainObject#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=2 + ) + (func $bindings/esm/PlainObject#set:c (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $bindings/esm/PlainObject#set:d (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=8 + ) + (func $bindings/esm/PlainObject#set:e (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=16 + ) + (func $bindings/esm/PlainObject#set:f (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=18 + ) + (func $bindings/esm/PlainObject#set:g (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $bindings/esm/PlainObject#set:h (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=24 + ) + (func $bindings/esm/PlainObject#set:i (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=32 + ) + (func $bindings/esm/PlainObject#set:j (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=36 + ) + (func $bindings/esm/PlainObject#set:k (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=40 + ) + (func $bindings/esm/PlainObject#set:l (param $0 i32) (param $1 f32) + local.get $0 + local.get $1 + f32.store offset=44 + ) + (func $bindings/esm/PlainObject#set:m (param $0 i32) (param $1 f64) + local.get $0 + local.get $1 + f64.store offset=48 + ) + (func $bindings/esm/PlainObject#set:n (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=56 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:o (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=60 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:p (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=64 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/newInternref (result i32) + i32.const 0 + call $bindings/esm/NonPlainObject#constructor + ) + (func $bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 912 + i32.const 368 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 976 + i32.const 368 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + (local $0 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 + local.set $0 + local.get $0 + 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 + local.set $0 + local.get $0 + 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 $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 496 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 912 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 976 + 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=56 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=60 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=64 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + 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 $bindings/esm/NonPlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + 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/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 + local.get $0 + local.get $1 + call $~lib/array/Array~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 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~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 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17536 + i32.const 17584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:bindings/esm + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 96 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 128 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + global.get $bindings/esm/immutableGlobal + drop + global.get $bindings/esm/immutableGlobalNested + drop + call $bindings/esm/Date_getTimezoneOffset + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 192 + i32.const 240 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $2 + local.get $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + local.get $3 + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $4 + local.get $2 + i32.add + local.get $1 + local.get $3 + memory.copy + local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + local.get $2 + local.get $3 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + i32.const 704 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $5 + local.get $2 + i32.add + local.get $1 + local.get $3 + memory.copy + 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 + ) + (func $bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional + 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/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 240 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $0 + 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/typedarray/Uint64Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.add + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/typedarray/Int16Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/typedarray/Float32Array#__get + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/staticarray/StaticArray#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 800 + i32.const 91 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.get $1 + call $~lib/staticarray/StaticArray#get:length + i32.add + call $~lib/staticarray/StaticArray#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $1 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 192 + i32.const 864 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $5 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/array/Array#get:length + local.get $1 + call $~lib/array/Array#get:length + i32.add + call $~lib/array/Array#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + call $~lib/array/Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $0 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $bindings/esm/PlainObject#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:a + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:b + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:c + local.get $0 + i64.const 0 + call $bindings/esm/PlainObject#set:d + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:e + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:f + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:g + local.get $0 + i64.const 0 + call $bindings/esm/PlainObject#set:h + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:i + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:j + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:k + local.get $0 + f32.const 0 + call $bindings/esm/PlainObject#set:l + local.get $0 + f64.const 0 + call $bindings/esm/PlainObject#set:m + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:n + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:o + local.get $0 + i32.const 0 + call $bindings/esm/PlainObject#set:p + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $bindings/esm/PlainObject#constructor + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load8_s + local.get $1 + i32.load8_s + i32.add + call $bindings/esm/PlainObject#set:a + local.get $2 + local.get $0 + i32.load16_s offset=2 + local.get $1 + i32.load16_s offset=2 + i32.add + call $bindings/esm/PlainObject#set:b + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $bindings/esm/NonPlainObject#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + 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/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/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 + i32.store + 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 + 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/bindings/raw.js b/tests/compiler/bindings/raw.js new file mode 100644 index 0000000000..72175ee8d7 --- /dev/null +++ b/tests/compiler/bindings/raw.js @@ -0,0 +1,6 @@ +export function preInstantiate(imports, exports) { + const env = imports.env ||= {}; + env["console.log"] = function() { /* stub */ }; + env["performance.timeOrigin"] = 42; + // env.mutableGlobal = new WebAssembly.Global({ value: "i32", mutable: true}, 42); +} diff --git a/tests/compiler/bindings/raw.json b/tests/compiler/bindings/raw.json new file mode 100644 index 0000000000..ef2bede019 --- /dev/null +++ b/tests/compiler/bindings/raw.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + "--exportRuntime", + "--exportStart _start", + "--bindings raw" + ], + "features": [ + "reference-types" + ] +} diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts new file mode 100644 index 0000000000..14bc6d53ec --- /dev/null +++ b/tests/compiler/bindings/raw.release.d.ts @@ -0,0 +1,160 @@ +declare namespace __AdaptedExports { + /** bindings/esm/plainGlobal */ + export const plainGlobal: { + /** @type `i32` */ + get value(): number + }; + /** bindings/esm/plainMutableGlobal */ + export const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); + }; + /** bindings/esm/stringGlobal */ + export const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string + }; + /** bindings/esm/mutableStringGlobal */ + export const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); + }; + /** bindings/esm/Enum */ + export enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** bindings/esm/ConstEnum */ + export enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ + export function plainFunction(a: number, b: number): number; + /** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ + export function plainFunction64(a: bigint, b: bigint): bigint; + /** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ + export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; + /** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunction(a: string, b: string): string; + /** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunctionOptional(a: string, b?: string): string; + /** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ + export function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; + /** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ + export function arrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ + export function objectFunction(a: __Record8, b: __Record8): __Record8; + /** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ + export function newInternref(): __Internref11; + /** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ + export function internrefFunction(a: __Internref11, b: __Internref11): __Internref11; +} +/** bindings/esm/PlainObject */ +declare interface __Record8 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref11 extends Number { + private __nominal11: symbol; +} +/** Instantiates the compiled WebAssembly module with the given imports. */ +export declare function instantiate(module: WebAssembly.Module, imports: { + env: unknown, +}): Promise; diff --git a/tests/compiler/bindings/raw.release.js b/tests/compiler/bindings/raw.release.js new file mode 100644 index 0000000000..dabcb032b9 --- /dev/null +++ b/tests/compiler/bindings/raw.release.js @@ -0,0 +1,353 @@ +export async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.assign(Object.create(globalThis), imports.env || {}, { + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log": ( + // ~lib/bindings/dom/Math.log(f64) => f64 + Math.log + ), + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: externref + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + 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}`); + })(); + }, + }), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b) || __notnull(); + try { + return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b) || __notnull(); + try { + return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord8(a) || __notnull()); + b = __lowerRecord8(b) || __notnull(); + try { + return __liftRecord8(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + }, exports); + function __lowerRecord8(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 8)); + new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; + new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; + new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; + new BigInt64Array(memory.buffer)[pointer + 8 >>> 3] = value.d || 0n; + new Uint8Array(memory.buffer)[pointer + 16 >>> 0] = value.e; + new Uint16Array(memory.buffer)[pointer + 18 >>> 1] = value.f; + new Uint32Array(memory.buffer)[pointer + 20 >>> 2] = value.g; + new BigUint64Array(memory.buffer)[pointer + 24 >>> 3] = value.h || 0n; + new Int32Array(memory.buffer)[pointer + 32 >>> 2] = value.i; + new Uint32Array(memory.buffer)[pointer + 36 >>> 2] = value.j; + new Uint8Array(memory.buffer)[pointer + 40 >>> 0] = value.k ? 1 : 0; + new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; + new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; + new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 9, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 10, 2, value.p); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord8(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: new Int8Array(memory.buffer)[pointer + 0 >>> 0], + b: new Int16Array(memory.buffer)[pointer + 2 >>> 1], + c: new Int32Array(memory.buffer)[pointer + 4 >>> 2], + d: new BigInt64Array(memory.buffer)[pointer + 8 >>> 3], + e: new Uint8Array(memory.buffer)[pointer + 16 >>> 0], + f: new Uint16Array(memory.buffer)[pointer + 18 >>> 1], + g: new Uint32Array(memory.buffer)[pointer + 20 >>> 2], + h: new BigUint64Array(memory.buffer)[pointer + 24 >>> 3], + i: new Int32Array(memory.buffer)[pointer + 32 >>> 2], + j: new Uint32Array(memory.buffer)[pointer + 36 >>> 2], + k: new Uint8Array(memory.buffer)[pointer + 40 >>> 0] != 0, + l: new Float32Array(memory.buffer)[pointer + 44 >>> 2], + m: new Float64Array(memory.buffer)[pointer + 48 >>> 3], + n: __liftString(new Uint32Array(memory.buffer)[pointer + 56 >>> 2]), + o: __liftTypedArray(Uint8Array, new Uint32Array(memory.buffer)[pointer + 60 >>> 2]), + p: __liftArray(pointer => __liftString(new Uint32Array(memory.buffer)[pointer >>> 2]), 2, new Uint32Array(memory.buffer)[pointer + 64 >>> 2]), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 0) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 1) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + memoryU32 = new Uint32Array(memory.buffer), + dataStart = memoryU32[pointer + 4 >>> 2], + length = memoryU32[pointer + 12 >>> 2], + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + memoryU32[header + 12 >>> 2] = length; + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + const memoryU32 = new Uint32Array(memory.buffer); + return new constructor( + memory.buffer, + memoryU32[pointer + 4 >>> 2], + memoryU32[pointer + 8 >>> 2] / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 0)) >>> 0, + header = exports.__new(12, id) >>> 0, + memoryU32 = new Uint32Array(memory.buffer); + memoryU32[header + 0 >>> 2] = buffer; + memoryU32[header + 4 >>> 2] = buffer; + memoryU32[header + 8 >>> 2] = length << align; + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + return buffer; + } + const registry = new FinalizationRegistry(__release); + class Internref extends Number {} + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + exports._start(); + return adaptedExports; +} diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat new file mode 100644 index 0000000000..3d2254e47d --- /dev/null +++ b/tests/compiler/bindings/raw.release.wat @@ -0,0 +1,3333 @@ +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 1056)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 1088)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $~lib/rt/itcms/total (mut 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 $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2048)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18532)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\02\00\00\00a") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\02\00\00\00b") + (data (i32.const 1100) "\1c") + (data (i32.const 1112) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") + (data (i32.const 1132) "<") + (data (i32.const 1144) "\01\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 (i32.const 1196) ",") + (data (i32.const 1208) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1244) "<") + (data (i32.const 1256) "\01\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 (i32.const 1308) "<") + (data (i32.const 1320) "\01\00\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 (i32.const 1372) "<") + (data (i32.const 1384) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1500) "<") + (data (i32.const 1512) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1564) ",") + (data (i32.const 1576) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1644) "<") + (data (i32.const 1656) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1708) "\1c") + (data (i32.const 1720) "\01") + (data (i32.const 1740) "<") + (data (i32.const 1752) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1804) "<") + (data (i32.const 1816) "\01\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 (i32.const 1868) ",") + (data (i32.const 1880) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1916) "<") + (data (i32.const 1928) "\01\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 (i32.const 1980) "<") + (data (i32.const 1992) "\01\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 (i32.const 2048) "\0c\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2076) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\02\t") + (data (i32.const 2124) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1520 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1216 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1328 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1936 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 2000 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18532 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 2048 + i32.load + local.get $2 + i32.lt_u + if + i32.const 1520 + i32.const 1584 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 2052 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (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 $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + 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 1664 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.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 1664 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_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 1664 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 18544 + i32.const 0 + i32.store + i32.const 20112 + 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 18544 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 18544 + 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 18544 + i32.const 20116 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18544 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18532 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18532 + 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 18532 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1664 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + 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 $3 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/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 1328 + i32.const 1392 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + 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 1328 + i32.const 1664 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $2 + i32.const 12 + i32.le_u + select + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + 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 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $5 + i32.add + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + 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 + i32.const 16 + i32.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 1664 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $5 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 498 + 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 $3 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1664 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $6 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $3 + i32.const 2 + i32.and + local.get $5 + i32.or + i32.store + local.get $5 + local.get $2 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $6 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $2 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 1164 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1824 + i32.const 118 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1824 + i32.const 133 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1520 + i32.const 1888 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1520 + i32.const 1888 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1216 + i32.const 1888 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $4 + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $5 + local.get $0 + i32.load + local.tee $4 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $5 + i32.store offset=16 + local.get $4 + local.set $3 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $5 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + local.get $5 + local.get $6 + i32.load offset=16 + local.tee $6 + local.get $5 + local.get $6 + i32.lt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + end + local.get $0 + local.get $5 + i32.store offset=8 + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1936 + i32.const 1392 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 2000 + i32.const 1392 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (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/esm/NonPlainObject + block $~lib/array/Array<~lib/string/String> + block $bindings/esm/PlainObject + block $~lib/staticarray/StaticArray + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=56 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=60 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=64 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + (local $0 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1120 + i32.store + i32.const 1120 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + i32.const 1152 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 18532 + 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 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 + i32.add + local.set $5 + local.get $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1264 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + 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 $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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + end + local.get $0 + local.get $1 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $4 + i32.const 134217727 + i32.gt_u + if + i32.const 1216 + i32.const 1264 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor + end + br $folding-inner1 + end + local.tee $2 + i32.store + loop $for-loop|0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $3 + i32.gt_s + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $3 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 448 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i64.load16_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $3 + i32.gt_s + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $3 + i32.add + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $3 + i32.le_u + if + i32.const 1520 + i32.const 1760 + i32.const 1294 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/staticarrayFunction (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-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/staticarrayFunction (result i32) + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1216 + i32.const 1824 + i32.const 91 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $4 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + local.get $0 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.gt_s + if + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.add + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + br $__inlined_func$bindings/esm/staticarrayFunction + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/arrayFunction (result i32) + local.get $0 + local.set $3 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $6 + i32.const 0 + i32.store + local.get $3 + i32.load offset=12 + local.get $1 + i32.load offset=12 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1216 + i32.const 1888 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 8 + local.get $5 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $2 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + local.get $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $3 + i32.load offset=12 + local.get $0 + i32.gt_s + if + local.get $2 + local.get $0 + local.get $3 + local.get $0 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $1 + i32.load offset=12 + local.get $0 + i32.gt_s + if + local.get $2 + local.get $3 + i32.load offset=12 + local.get $0 + i32.add + local.get $1 + local.get $0 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/arrayFunction + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/objectFunction (result i32) + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 68 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store8 + local.get $3 + i32.const 0 + i32.store16 offset=2 + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store8 offset=16 + local.get $3 + i32.const 0 + i32.store16 offset=18 + local.get $3 + i32.const 0 + i32.store offset=20 + local.get $3 + i64.const 0 + i64.store offset=24 + local.get $3 + i32.const 0 + i32.store offset=32 + local.get $3 + i32.const 0 + i32.store offset=36 + local.get $3 + i32.const 0 + i32.store8 offset=40 + local.get $3 + f32.const 0 + f32.store offset=44 + local.get $3 + f64.const 0 + f64.store offset=48 + local.get $3 + i32.const 0 + i32.store offset=56 + local.get $3 + i32.const 0 + i32.store offset=60 + local.get $3 + i32.const 0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.store + local.get $3 + local.get $0 + i32.load8_s + local.get $1 + i32.load8_s + i32.add + i32.store8 + local.get $3 + local.get $0 + i32.load16_s offset=2 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + br $__inlined_func$bindings/esm/objectFunction + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2148 + i32.lt_s + if + i32.const 18560 + i32.const 18608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) +) diff --git a/tests/compiler/bindings/raw.ts b/tests/compiler/bindings/raw.ts new file mode 100644 index 0000000000..ab49b3b40a --- /dev/null +++ b/tests/compiler/bindings/raw.ts @@ -0,0 +1 @@ +export * from "./esm"; diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.debug.wat similarity index 100% rename from tests/compiler/bool.untouched.wat rename to tests/compiler/bool.debug.wat diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.release.wat similarity index 100% rename from tests/compiler/bool.optimized.wat rename to tests/compiler/bool.release.wat diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.debug.wat similarity index 99% rename from tests/compiler/builtins.untouched.wat rename to tests/compiler/builtins.debug.wat index ff642e6620..81a545ffc8 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.debug.wat @@ -24,7 +24,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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)) @@ -2502,11 +2502,11 @@ local.set $1 i32.const 0 local.set $0 - i32.const 23 - local.set $6 i32.const 24 + local.set $6 + i32.const 25 local.set $7 - i32.const 24 + i32.const 25 local.set $8 i32.const 256 local.set $9 @@ -2551,7 +2551,7 @@ unreachable end local.get $6 - i32.const 23 + i32.const 24 i32.eq i32.eqz if diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.release.wat similarity index 99% rename from tests/compiler/builtins.optimized.wat rename to tests/compiler/builtins.release.wat index 51a190f843..0618716a77 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.release.wat @@ -687,9 +687,9 @@ i32.const 5 f64.const 0 f64.const 0 - f64.const 23 - f64.const 24 f64.const 24 + f64.const 25 + f64.const 25 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer local.tee $0 diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.debug.wat similarity index 100% rename from tests/compiler/call-inferred.untouched.wat rename to tests/compiler/call-inferred.debug.wat diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.release.wat similarity index 100% rename from tests/compiler/call-inferred.optimized.wat rename to tests/compiler/call-inferred.release.wat diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.debug.wat similarity index 100% rename from tests/compiler/call-optional.untouched.wat rename to tests/compiler/call-optional.debug.wat diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.release.wat similarity index 100% rename from tests/compiler/call-optional.optimized.wat rename to tests/compiler/call-optional.release.wat diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.debug.wat similarity index 93% rename from tests/compiler/call-super.untouched.wat rename to tests/compiler/call-super.debug.wat index 3cd4a32f81..53b31bfb6c 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 572)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16956)) @@ -2063,237 +2062,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2343,7 +2111,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $call-super/A#set:a (param $0 i32) (param $1 i32) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.release.wat similarity index 92% rename from tests/compiler/call-super.optimized.wat rename to tests/compiler/call-super.release.wat index b74f1fb51e..fbee925aa7 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.release.wat @@ -1129,7 +1129,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1144,7 +1144,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1157,7 +1157,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1165,7 +1165,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1176,16 +1176,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1196,16 +1196,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1213,7 +1213,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1221,8 +1221,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1239,7 +1239,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1249,13 +1249,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1268,40 +1268,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1361,182 +1361,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/cast.untouched.wat b/tests/compiler/cast.debug.wat similarity index 100% rename from tests/compiler/cast.untouched.wat rename to tests/compiler/cast.debug.wat diff --git a/tests/compiler/cast.optimized.wat b/tests/compiler/cast.release.wat similarity index 100% rename from tests/compiler/cast.optimized.wat rename to tests/compiler/cast.release.wat diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.debug.wat similarity index 100% rename from tests/compiler/class-extends.untouched.wat rename to tests/compiler/class-extends.debug.wat diff --git a/tests/compiler/class-extends.optimized.wat b/tests/compiler/class-extends.release.wat similarity index 100% rename from tests/compiler/class-extends.optimized.wat rename to tests/compiler/class-extends.release.wat diff --git a/tests/compiler/class-implements.debug.wat b/tests/compiler/class-implements.debug.wat new file mode 100644 index 0000000000..cbc196ecc6 --- /dev/null +++ b/tests/compiler/class-implements.debug.wat @@ -0,0 +1,2372 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (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/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class-implements/a (mut i32) (i32.const 0)) + (global $class-implements/c (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 540)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16924)) + (global $~lib/memory/__heap_base i32 (i32.const 16924)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (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 \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\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 96 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 96 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 32 + i32.const 96 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $class-implements/A#foo (param $0 i32) (result i32) + i32.const 1 + ) + (func $class-implements/C#foo (param $0 i32) (result i32) + i32.const 2 + ) + (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 + 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $invalid + 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-implements + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16944 + i32.const 16992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:class-implements + (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 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.const 0 + call $class-implements/A#constructor + global.set $class-implements/a + global.get $class-implements/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/A#foo + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/C#constructor + global.set $class-implements/c + global.get $class-implements/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/C#foo + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/A#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/C#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-implements/B#constructor + local.tee $0 + i32.store + local.get $0 + 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/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat deleted file mode 100644 index e38032dcbb..0000000000 --- a/tests/compiler/class-implements.optimized.wat +++ /dev/null @@ -1,1705 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (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 $class-implements/a (mut i32) (i32.const 0)) - (global $class-implements/c (mut i32) (i32.const 0)) - (global $class-implements/A i32 (i32.const 3)) - (global $class-implements/C i32 (i32.const 5)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17948)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1292) ",") - (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1436) "<") - (data (i32.const 1448) "\01\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 (i32.const 1504) "\07\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1532) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 ") - (export "A" (global $class-implements/A)) - (export "C" (global $class-implements/C)) - (export "memory" (memory $0)) - (export "A#foo" (func $export:class-implements/A#foo)) - (export "A#constructor" (func $export:class-implements/A#constructor)) - (export "C#foo" (func $export:class-implements/C#foo)) - (export "C#constructor" (func $export:class-implements/C#constructor)) - (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-implements/a - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - global.get $class-implements/c - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - i32.const 1248 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 159 - 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/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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17952 - i32.const 0 - i32.store - i32.const 19520 - 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 17952 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17952 - 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 17952 - i32.const 19524 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17952 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17948 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17948 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17948 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - 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 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $1 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - 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.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $4 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $4 - 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 $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - 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 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (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 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17948 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $class-implements/A#constructor - global.set $class-implements/a - global.get $~lib/memory/__stack_pointer - global.get $class-implements/a - i32.store - i32.const 0 - call $class-implements/C#constructor - global.set $class-implements/c - global.get $~lib/memory/__stack_pointer - global.get $class-implements/c - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $class-implements/A#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $class-implements/C#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:class-implements/A#foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - ) - (func $export:class-implements/A#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/A#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:class-implements/C#foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - ) - (func $export:class-implements/C#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/C#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $1 - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 17948 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $0 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) -) diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat new file mode 100644 index 0000000000..ab36093071 --- /dev/null +++ b/tests/compiler/class-implements.release.wat @@ -0,0 +1,1570 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (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 $class-implements/a (mut i32) (i32.const 0)) + (global $class-implements/c (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17948)) + (memory $0 1) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") + (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1228) "<") + (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1292) ",") + (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1372) "<") + (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1436) "<") + (data (i32.const 1448) "\01\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 (i32.const 1504) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1532) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-implements/a + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + global.get $class-implements/c + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + i32.const 1248 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 159 + 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/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 $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 17952 + i32.const 0 + i32.store + i32.const 19520 + 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 17952 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 17952 + 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 17952 + i32.const 19524 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17952 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17948 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17948 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + 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 17948 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + 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 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $1 + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $4 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $4 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $4 + 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 $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17948 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-implements/a + global.get $~lib/memory/__stack_pointer + global.get $class-implements/a + 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 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-implements/c + global.get $~lib/memory/__stack_pointer + global.get $class-implements/c + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17948 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) +) diff --git a/tests/compiler/class-implements.ts b/tests/compiler/class-implements.ts index d284e80068..ec039b7367 100644 --- a/tests/compiler/class-implements.ts +++ b/tests/compiler/class-implements.ts @@ -2,19 +2,19 @@ interface I { foo(): i32; } -export class A implements I { +class A implements I { foo(): i32 { return 1; } } var a = new A(); -assert(a.foo() === 1); +assert(a.foo() == 1); class B { } -export class C extends B implements I { +class C extends B implements I { foo(): i32 { return 2; } } var c = new C(); -assert(c.foo() === 2); +assert(c.foo() == 2); diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat deleted file mode 100644 index 3d1f967fd7..0000000000 --- a/tests/compiler/class-implements.untouched.wat +++ /dev/null @@ -1,2688 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $class-implements/a (mut i32) (i32.const 0)) - (global $class-implements/c (mut i32) (i32.const 0)) - (global $class-implements/A i32 (i32.const 3)) - (global $class-implements/C i32 (i32.const 5)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 540)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16924)) - (global $~lib/memory/__heap_base i32 (i32.const 16924)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (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 \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\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "A" (global $class-implements/A)) - (export "C" (global $class-implements/C)) - (export "memory" (memory $0)) - (export "A#foo" (func $export:class-implements/A#foo)) - (export "A#constructor" (func $export:class-implements/A#constructor)) - (export "C#foo" (func $export:class-implements/C#foo)) - (export "C#constructor" (func $export:class-implements/C#constructor)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 224 - i32.const 288 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 96 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 96 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $class-implements/A#foo (param $0 i32) (result i32) - i32.const 1 - ) - (func $class-implements/C#foo (param $0 i32) (result i32) - i32.const 2 - ) - (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 - 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $invalid - 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-implements - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 16944 - i32.const 16992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:class-implements - (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 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.const 0 - call $class-implements/A#constructor - global.set $class-implements/a - global.get $class-implements/a - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/A#foo - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-implements/C#constructor - global.set $class-implements/c - global.get $class-implements/c - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/C#foo - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $class-implements/A#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $class-implements/B#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $class-implements/C#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-implements/B#constructor - local.tee $0 - i32.store - local.get $0 - 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:class-implements/A#foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/A#foo - 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:class-implements/A#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/A#constructor - 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:class-implements/C#foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/C#foo - 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:class-implements/C#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $class-implements/C#constructor - 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/class-overloading-cast.untouched.wat b/tests/compiler/class-overloading-cast.debug.wat similarity index 93% rename from tests/compiler/class-overloading-cast.untouched.wat rename to tests/compiler/class-overloading-cast.debug.wat index 1bcc0ca549..b6e723f7ff 100644 --- a/tests/compiler/class-overloading-cast.untouched.wat +++ b/tests/compiler/class-overloading-cast.debug.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -24,11 +24,11 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 592)) (global $~lib/memory/__data_end i32 (i32.const 676)) @@ -2073,237 +2073,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2353,7 +2122,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $class-overloading-cast/A#foo (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/class-overloading-cast.json b/tests/compiler/class-overloading-cast.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/class-overloading-cast.json +++ b/tests/compiler/class-overloading-cast.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/class-overloading-cast.optimized.wat b/tests/compiler/class-overloading-cast.release.wat similarity index 99% rename from tests/compiler/class-overloading-cast.optimized.wat rename to tests/compiler/class-overloading-cast.release.wat index b517856eda..5993731266 100644 --- a/tests/compiler/class-overloading-cast.optimized.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1255,6 +1255,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.debug.wat similarity index 95% rename from tests/compiler/class-overloading.untouched.wat rename to tests/compiler/class-overloading.debug.wat index b77ff017c3..34bf267948 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.debug.wat @@ -24,9 +24,9 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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)) @@ -2079,237 +2079,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2359,7 +2128,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $class-overloading/A#a (param $0 i32) (param $1 i32) diff --git a/tests/compiler/class-overloading.json b/tests/compiler/class-overloading.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/class-overloading.json +++ b/tests/compiler/class-overloading.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.release.wat similarity index 99% rename from tests/compiler/class-overloading.optimized.wat rename to tests/compiler/class-overloading.release.wat index 201fd5d68b..5845b31180 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.release.wat @@ -1279,6 +1279,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1552,7 +1557,6 @@ (func $start:class-overloading (local $0 i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2684,8 +2688,7 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2709,6 +2712,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.debug.wat similarity index 100% rename from tests/compiler/class-static-function.untouched.wat rename to tests/compiler/class-static-function.debug.wat diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.release.wat similarity index 100% rename from tests/compiler/class-static-function.optimized.wat rename to tests/compiler/class-static-function.release.wat diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.debug.wat similarity index 92% rename from tests/compiler/class.untouched.wat rename to tests/compiler/class.debug.wat index e27fc15a42..724bf3d83f 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.debug.wat @@ -25,9 +25,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/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 564)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) @@ -2176,237 +2175,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2456,7 +2224,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.release.wat similarity index 90% rename from tests/compiler/class.optimized.wat rename to tests/compiler/class.release.wat index 9ce8ee5e5f..219f4b7a5f 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.release.wat @@ -1269,7 +1269,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1284,7 +1284,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1297,7 +1297,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1305,7 +1305,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1316,16 +1316,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1336,16 +1336,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1353,7 +1353,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1361,8 +1361,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1379,7 +1379,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1389,13 +1389,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1408,40 +1408,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1501,182 +1501,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $class/testGenericInitializer (local $0 i32) @@ -1699,7 +1528,7 @@ i32.const 4 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1710,62 +1539,62 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store - local.get $0 + local.get $2 if + local.get $1 local.get $2 - local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $1 local.get $2 - local.get $0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 32 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - local.get $2 i32.store - local.get $2 + local.get $1 if + local.get $0 local.get $1 - local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.debug.wat similarity index 100% rename from tests/compiler/comma.untouched.wat rename to tests/compiler/comma.debug.wat diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.release.wat similarity index 100% rename from tests/compiler/comma.optimized.wat rename to tests/compiler/comma.release.wat diff --git a/tests/compiler/const-folding.untouched.wat b/tests/compiler/const-folding.debug.wat similarity index 100% rename from tests/compiler/const-folding.untouched.wat rename to tests/compiler/const-folding.debug.wat diff --git a/tests/compiler/const-folding.optimized.wat b/tests/compiler/const-folding.release.wat similarity index 100% rename from tests/compiler/const-folding.optimized.wat rename to tests/compiler/const-folding.release.wat diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.debug.wat similarity index 93% rename from tests/compiler/constructor.untouched.wat rename to tests/compiler/constructor.debug.wat index e6cb986975..dfcbdf978c 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $constructor/emptyCtor (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) @@ -2075,237 +2074,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2355,7 +2123,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $constructor/EmptyCtorWithFieldInit#set:a (param $0 i32) (param $1 i32) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.release.wat similarity index 91% rename from tests/compiler/constructor.optimized.wat rename to tests/compiler/constructor.release.wat index 53f8d7513f..d5e2fd03c3 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.release.wat @@ -24,8 +24,6 @@ (global $constructor/none (mut i32) (i32.const 0)) (global $constructor/justFieldInit (mut i32) (i32.const 0)) (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) - (global $constructor/ctorReturns (mut i32) (i32.const 0)) - (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/memory/__stack_pointer (mut i32) (i32.const 17988)) @@ -91,18 +89,6 @@ local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__visit end - global.get $constructor/ctorReturns - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - global.get $constructor/ctorConditionallyReturns - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end global.get $constructor/ctorConditionallyReturnsThis local.tee $0 if @@ -1206,7 +1192,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1221,7 +1207,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1234,7 +1220,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1242,7 +1228,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1253,16 +1239,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1273,16 +1259,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1290,7 +1276,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1298,8 +1284,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1316,7 +1302,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1326,13 +1312,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1345,40 +1331,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1438,182 +1424,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $start:constructor (local $0 i32) @@ -1836,8 +1651,6 @@ global.set $~lib/memory/__stack_pointer local.get $0 global.set $constructor/justFieldNoInit - i32.const 0 - global.set $constructor/ctorReturns global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1859,8 +1672,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - global.set $constructor/ctorConditionallyReturns global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.debug.wat similarity index 100% rename from tests/compiler/continue.untouched.wat rename to tests/compiler/continue.debug.wat diff --git a/tests/compiler/continue.optimized.wat b/tests/compiler/continue.release.wat similarity index 100% rename from tests/compiler/continue.optimized.wat rename to tests/compiler/continue.release.wat diff --git a/tests/compiler/converge.untouched.wat b/tests/compiler/converge.debug.wat similarity index 100% rename from tests/compiler/converge.untouched.wat rename to tests/compiler/converge.debug.wat diff --git a/tests/compiler/converge.optimized.wat b/tests/compiler/converge.release.wat similarity index 100% rename from tests/compiler/converge.optimized.wat rename to tests/compiler/converge.release.wat diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.debug.wat similarity index 100% rename from tests/compiler/declare.untouched.wat rename to tests/compiler/declare.debug.wat diff --git a/tests/compiler/declare.js b/tests/compiler/declare.js index e99808baa3..931d65134a 100644 --- a/tests/compiler/declare.js +++ b/tests/compiler/declare.js @@ -1,8 +1,8 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.declare = { externalFunction: function() { /* nop */ }, externalConstant: 1, "my.externalFunction": function() { /* nop */ }, "my.externalConstant": 2 }; -}; +} diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.release.wat similarity index 100% rename from tests/compiler/declare.optimized.wat rename to tests/compiler/declare.release.wat diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.debug.wat similarity index 93% rename from tests/compiler/do.untouched.wat rename to tests/compiler/do.debug.wat index 92a47f874d..f0239dfac4 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -23,8 +23,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 484)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16868)) @@ -2472,237 +2471,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2752,7 +2520,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $do/testRef diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.release.wat similarity index 99% rename from tests/compiler/do.optimized.wat rename to tests/compiler/do.release.wat index 85ff5e74b6..da6b9a9b47 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.release.wat @@ -1718,11 +1718,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/duplicate-field-errors.ts b/tests/compiler/duplicate-field-errors.ts index b68e6f323a..61979a4166 100644 --- a/tests/compiler/duplicate-field-errors.ts +++ b/tests/compiler/duplicate-field-errors.ts @@ -17,7 +17,7 @@ class A { method(): void {} } -export class B extends A { +class B extends A { private privPriv: i32; protected privProt: i32; public privPub: i32; @@ -36,3 +36,7 @@ export class B extends A { public method: i32; } +export function test(): void { + new A(); + new B(); +} diff --git a/tests/compiler/duplicate-fields.untouched.wat b/tests/compiler/duplicate-fields.debug.wat similarity index 86% rename from tests/compiler/duplicate-fields.untouched.wat rename to tests/compiler/duplicate-fields.debug.wat index 8bf32e91a4..fbd68c9260 100644 --- a/tests/compiler/duplicate-fields.untouched.wat +++ b/tests/compiler/duplicate-fields.debug.wat @@ -22,11 +22,9 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 $duplicate-fields/B3 i32 (i32.const 9)) (global $~lib/rt/__rtti_base i32 (i32.const 480)) (global $~lib/memory/__data_end i32 (i32.const 572)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16956)) @@ -44,15 +42,7 @@ (data (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\03\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\05\00\00\00 \00\00\00\06\00\00\00 \00\00\00\n\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (elem $0 (i32.const 1)) - (export "B3" (global $duplicate-fields/B3)) (export "memory" (memory $0)) - (export "B3#get:protProt" (func $export:duplicate-fields/B3#get:protProt)) - (export "B3#set:protProt" (func $export:duplicate-fields/B3#set:protProt)) - (export "B3#get:protPub" (func $export:duplicate-fields/B3#get:protPub)) - (export "B3#set:protPub" (func $export:duplicate-fields/B3#set:protPub)) - (export "B3#get:pubPub" (func $export:duplicate-fields/B3#get:pubPub)) - (export "B3#set:pubPub" (func $export:duplicate-fields/B3#set:pubPub)) - (export "B3#constructor" (func $export:duplicate-fields/B3#constructor)) (start $~start) (func $duplicate-fields/A#set:bar (param $0 i32) (param $1 i32) local.get $0 @@ -2079,237 +2069,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2359,7 +2118,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $duplicate-fields/B#set:bar (param $0 i32) (param $1 i32) @@ -2493,18 +2252,6 @@ local.get $1 i32.store offset=8 ) - (func $duplicate-fields/B3#get:protProt (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $duplicate-fields/B3#get:protPub (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $duplicate-fields/B3#get:pubPub (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) global.get $duplicate-fields/foo @@ -2718,6 +2465,9 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + call $duplicate-fields/B3#constructor + drop global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3024,131 +2774,4 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $export:duplicate-fields/B3#get:protProt (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 $duplicate-fields/B3#get:protProt - 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:duplicate-fields/B3#set:protProt (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $duplicate-fields/B3#set:protProt - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#get:protPub (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 $duplicate-fields/B3#get:protPub - 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:duplicate-fields/B3#set:protPub (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $duplicate-fields/B3#set:protPub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#get:pubPub (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 $duplicate-fields/B3#get:pubPub - 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:duplicate-fields/B3#set:pubPub (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $duplicate-fields/B3#set:pubPub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $duplicate-fields/B3#constructor - 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/duplicate-fields.optimized.wat b/tests/compiler/duplicate-fields.release.wat similarity index 81% rename from tests/compiler/duplicate-fields.optimized.wat rename to tests/compiler/duplicate-fields.release.wat index 8b63f0ade2..a62505892e 100644 --- a/tests/compiler/duplicate-fields.optimized.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -1,8 +1,7 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -20,7 +19,6 @@ (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 $duplicate-fields/B3 i32 (i32.const 9)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17980)) (memory $0 1) (data (i32.const 1036) "<") @@ -39,15 +37,7 @@ (data (i32.const 1532) " \00\00\00\00\00\00\00 \00\00\00\03") (data (i32.const 1556) " ") (data (i32.const 1568) "\05\00\00\00 \00\00\00\06\00\00\00 \00\00\00\n\00\00\00 ") - (export "B3" (global $duplicate-fields/B3)) (export "memory" (memory $0)) - (export "B3#get:protProt" (func $export:duplicate-fields/B3#get:protProt)) - (export "B3#set:protProt" (func $export:duplicate-fields/B3#set:protProt)) - (export "B3#get:protPub" (func $export:duplicate-fields/B3#get:protPub)) - (export "B3#set:protPub" (func $export:duplicate-fields/B3#set:protPub)) - (export "B3#get:pubPub" (func $export:duplicate-fields/B3#get:pubPub)) - (export "B3#set:pubPub" (func $export:duplicate-fields/B3#set:pubPub)) - (export "B3#constructor" (func $export:duplicate-fields/B3#constructor)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) @@ -1287,7 +1277,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1302,7 +1292,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1315,7 +1305,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1323,7 +1313,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1334,16 +1324,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1354,16 +1344,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1371,7 +1361,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1379,8 +1369,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1397,7 +1387,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1407,13 +1397,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1426,40 +1416,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1519,182 +1509,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2034,205 +1853,6 @@ end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:duplicate-fields/B3#get:protProt (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#set:protProt (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#get:protPub (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#set:protPub (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#get:pubPub (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#set:pubPub (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=8 - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:duplicate-fields/B3#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2240,18 +1860,15 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 4 @@ -2307,7 +1924,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 18000 diff --git a/tests/compiler/duplicate-fields.ts b/tests/compiler/duplicate-fields.ts index 35e6d74f14..fce4ff6855 100644 --- a/tests/compiler/duplicate-fields.ts +++ b/tests/compiler/duplicate-fields.ts @@ -50,8 +50,10 @@ class A3 { public pubPub: i32; } -export class B3 extends A3 { +class B3 extends A3 { protected protProt: i32; public protPub: i32; public pubPub: i32; -} \ No newline at end of file +} + +new B3(); diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/empty-exportruntime.debug.wat similarity index 91% rename from tests/compiler/rt/runtime-incremental-export.untouched.wat rename to tests/compiler/empty-exportruntime.debug.wat index bcf84011f0..6b98a6fe6a 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/empty-exportruntime.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 572)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16956)) @@ -2069,237 +2068,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2349,7 +2117,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/empty-exportruntime.release.wat similarity index 90% rename from tests/compiler/rt/runtime-incremental-export.optimized.wat rename to tests/compiler/empty-exportruntime.release.wat index fe98d1636f..d1611e10a5 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -1275,7 +1275,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1290,7 +1290,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1303,7 +1303,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1311,7 +1311,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1322,16 +1322,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1342,16 +1342,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1359,7 +1359,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1367,8 +1367,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1385,7 +1385,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1395,13 +1395,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1414,40 +1414,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1507,182 +1507,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.debug.wat similarity index 90% rename from tests/compiler/empty-new.untouched.wat rename to tests/compiler/empty-new.debug.wat index 8f30e3f8cd..dce893876b 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 16828)) @@ -2062,237 +2061,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2342,7 +2110,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $start:empty-new diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.release.wat similarity index 99% rename from tests/compiler/empty-new.optimized.wat rename to tests/compiler/empty-new.release.wat index f761c77533..d52a19b681 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.release.wat @@ -1270,6 +1270,12 @@ i32.add i32.add global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + i32.const 0 + i32.const 0 + memory.fill ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.debug.wat similarity index 100% rename from tests/compiler/empty.untouched.wat rename to tests/compiler/empty.debug.wat diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.release.wat similarity index 100% rename from tests/compiler/empty.optimized.wat rename to tests/compiler/empty.release.wat diff --git a/tests/compiler/enum.untouched.wat b/tests/compiler/enum.debug.wat similarity index 100% rename from tests/compiler/enum.untouched.wat rename to tests/compiler/enum.debug.wat diff --git a/tests/compiler/enum.optimized.wat b/tests/compiler/enum.release.wat similarity index 100% rename from tests/compiler/enum.optimized.wat rename to tests/compiler/enum.release.wat diff --git a/tests/compiler/export-default.untouched.wat b/tests/compiler/export-default.debug.wat similarity index 100% rename from tests/compiler/export-default.untouched.wat rename to tests/compiler/export-default.debug.wat diff --git a/tests/compiler/export-default.optimized.wat b/tests/compiler/export-default.release.wat similarity index 100% rename from tests/compiler/export-default.optimized.wat rename to tests/compiler/export-default.release.wat diff --git a/tests/compiler/export-generic.json b/tests/compiler/export-generic.json deleted file mode 100644 index b7b9b0b6e2..0000000000 --- a/tests/compiler/export-generic.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "asc_flags": [ - "--pedantic" - ], - "stderr": [ - "AS907: Exported generic function or class has no concrete instances.", - "export function testFunction", - "AS907: Exported generic function or class has no concrete instances.", - "export class TestClass", - "AS907: Exported generic function or class has no concrete instances.", - "public testMethod()", - "AS907: Exported generic function or class has no concrete instances.", - "export function testNamespacedFunction", - "AS907: Exported generic function or class has no concrete instances.", - "export class TestNamespacedClass" - ] -} diff --git a/tests/compiler/export-generic.ts b/tests/compiler/export-generic.ts deleted file mode 100644 index def0f4b67b..0000000000 --- a/tests/compiler/export-generic.ts +++ /dev/null @@ -1,14 +0,0 @@ -export function testFunction(): void {} - -export class TestClass {} - -export class Foo { - public testMethod(): void {} -} - -export namespace test { - export function testNamespacedFunction(): void {} - export class TestNamespacedClass {} -} - -ERROR("EOF"); diff --git a/tests/compiler/export.untouched.wat b/tests/compiler/export.debug.wat similarity index 84% rename from tests/compiler/export.untouched.wat rename to tests/compiler/export.debug.wat index 75fdad29c7..e28ed478ea 100644 --- a/tests/compiler/export.untouched.wat +++ b/tests/compiler/export.debug.wat @@ -1,6 +1,5 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -16,8 +15,6 @@ (export "a" (global $export/a)) (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.two)) - (export "default.two" (func $export/ns.two)) (export "memory" (memory $0)) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -34,10 +31,4 @@ local.get $1 i32.mul ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) ) diff --git a/tests/compiler/exportstar.optimized.wat b/tests/compiler/export.release.wat similarity index 83% rename from tests/compiler/exportstar.optimized.wat rename to tests/compiler/export.release.wat index 00423435e6..a785e0e68b 100644 --- a/tests/compiler/exportstar.optimized.wat +++ b/tests/compiler/export.release.wat @@ -1,6 +1,5 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -11,8 +10,6 @@ (export "a" (global $export/a)) (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.one)) - (export "default.two" (func $export/ns.one)) (export "memory" (memory $0)) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -29,7 +26,4 @@ local.get $1 i32.mul ) - (func $export/ns.one - nop - ) ) diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.debug.wat similarity index 100% rename from tests/compiler/exportimport-table.untouched.wat rename to tests/compiler/exportimport-table.debug.wat diff --git a/tests/compiler/exportimport-table.js b/tests/compiler/exportimport-table.js index ce8963366a..82a0c2c726 100644 --- a/tests/compiler/exportimport-table.js +++ b/tests/compiler/exportimport-table.js @@ -1,5 +1,5 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.env = { table: new WebAssembly.Table({ element: "anyfunc", initial: 2 }) }; -}; +} diff --git a/tests/compiler/exportimport-table.optimized.wat b/tests/compiler/exportimport-table.release.wat similarity index 100% rename from tests/compiler/exportimport-table.optimized.wat rename to tests/compiler/exportimport-table.release.wat diff --git a/tests/compiler/exports-lazy.untouched.wat b/tests/compiler/exports-lazy.debug.wat similarity index 55% rename from tests/compiler/exports-lazy.untouched.wat rename to tests/compiler/exports-lazy.debug.wat index 4a986f6f5a..7a131f3108 100644 --- a/tests/compiler/exports-lazy.untouched.wat +++ b/tests/compiler/exports-lazy.debug.wat @@ -1,14 +1,18 @@ (module (type $none_=>_none (func)) (global $exports-lazy/lazyGlobalUsed i32 (i32.const 64)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) - (global $~lib/memory/__heap_base i32 (i32.const 16476)) + (global $exports-lazy/lazyGlobalUnused i32 (i32.const 144)) + (global $~lib/memory/__data_end i32 (i32.const 172)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16556)) + (global $~lib/memory/__heap_base i32 (i32.const 16556)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\03\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 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00p\00\00\00p\00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (elem $0 (i32.const 1)) + (export "lazyGlobalUnused" (global $exports-lazy/lazyGlobalUnused)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) (export "memory" (memory $0)) (start $~start) @@ -22,6 +26,9 @@ (func $exports-lazy/lazyFuncUsed nop ) + (func $exports-lazy/lazyFuncUnused + nop + ) (func $~start call $start:exports-lazy ) diff --git a/tests/compiler/exports-lazy.optimized.wat b/tests/compiler/exports-lazy.release.wat similarity index 53% rename from tests/compiler/exports-lazy.optimized.wat rename to tests/compiler/exports-lazy.release.wat index a156649d7b..50251fcceb 100644 --- a/tests/compiler/exports-lazy.optimized.wat +++ b/tests/compiler/exports-lazy.release.wat @@ -1,10 +1,16 @@ (module (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1088)) + (global $exports-lazy/lazyGlobalUnused i32 (i32.const 1168)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1052) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 1068) ",") (data (i32.const 1080) "\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\0c\00\00\00\03") + (data (i32.const 1116) "\1c") + (data (i32.const 1132) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1148) ",") + (data (i32.const 1160) "\03\00\00\00\10\00\00\00p\04\00\00p\04\00\00\0c\00\00\00\03") + (export "lazyGlobalUnused" (global $exports-lazy/lazyGlobalUnused)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/exports.debug.wat b/tests/compiler/exports.debug.wat new file mode 100644 index 0000000000..d564ae7d4d --- /dev/null +++ b/tests/compiler/exports.debug.wat @@ -0,0 +1,65 @@ +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $exports/animals.Animal.CAT i32 (i32.const 0)) + (global $exports/animals.Animal.DOG i32 (i32.const 1)) + (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 $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) + (memory $0 0) + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $exports/add)) + (export "subOpt" (func $exports/subOpt@varargs)) + (export "Animal.CAT" (global $exports/Animal.CAT)) + (export "Animal.DOG" (global $exports/Animal.DOG)) + (export "renamed_mul" (func $export/mul)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $exports/subOpt@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 + i32.const 0 + local.set $1 + end + local.get $0 + local.get $1 + call $exports/subOpt + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) +) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat deleted file mode 100644 index 5ed5161167..0000000000 --- a/tests/compiler/exports.optimized.wat +++ /dev/null @@ -1,1763 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (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/rt/itcms/total (mut 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 $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1292) ",") - (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1440) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1468) " \00\00\00\00\00\00\00 ") - (export "add" (func $exports/add)) - (export "subOpt" (func $exports/subOpt@varargs)) - (export "math.sub" (func $exports/subOpt)) - (export "Animal.CAT" (global $exports/Animal.CAT)) - (export "Animal.DOG" (global $exports/Animal.DOG)) - (export "animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "Car" (global $exports/Car)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "outer.inner.a" (global $exports/outer.inner.a)) - (export "renamed_mul" (func $export/mul)) - (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (export "Car#get:doors" (func $export:exports/Car#get:doors)) - (export "Car#set:doors" (func $export:exports/Car#set:doors)) - (export "Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $export:exports/Car#get:doors)) - (export "Car#set:numDoors" (func $export:exports/Car#set:doors)) - (export "Car#openDoors" (func $export:exports/Car#openDoors)) - (export "vehicles.Car#get:doors" (func $export:exports/Car#get:doors)) - (export "vehicles.Car#set:doors" (func $export:exports/Car#set:doors)) - (export "vehicles.Car#constructor" (func $export:exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $export:exports/Car#get:doors)) - (export "vehicles.Car#set:numDoors" (func $export:exports/Car#set:doors)) - (export "vehicles.Car#openDoors" (func $export:exports/Car#openDoors)) - (start $~start) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - i32.const 4 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 159 - 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/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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17872 - i32.const 0 - i32.store - i32.const 19440 - 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 17872 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17872 - 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 17872 - i32.const 19444 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17872 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17868 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - 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 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $1 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - 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.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $4 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $4 - 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 $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/subOpt@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 - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/vehicles.Car - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $exports/vehicles.Car $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17868 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) - (func $export:exports/Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#set:doors (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:exports/Car#openDoors (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $1 - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 17868 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $0 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) -) diff --git a/tests/compiler/exports.release.wat b/tests/compiler/exports.release.wat new file mode 100644 index 0000000000..992ce0cde5 --- /dev/null +++ b/tests/compiler/exports.release.wat @@ -0,0 +1,47 @@ +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (memory $0 0) + (export "add" (func $exports/add)) + (export "subOpt" (func $exports/subOpt@varargs)) + (export "Animal.CAT" (global $exports/Animal.CAT)) + (export "Animal.DOG" (global $exports/Animal.DOG)) + (export "renamed_mul" (func $export/mul)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $exports/subOpt@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 + i32.const 0 + local.set $1 + end + local.get $0 + local.get $1 + i32.sub + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) +) diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat deleted file mode 100644 index 8d3f9103b0..0000000000 --- a/tests/compiler/exports.untouched.wat +++ /dev/null @@ -1,2875 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (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 $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $~lib/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 460)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16844)) - (global $~lib/memory/__heap_base i32 (i32.const 16844)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\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 funcref) - (elem $0 (i32.const 1)) - (export "add" (func $exports/add)) - (export "subOpt" (func $exports/subOpt@varargs)) - (export "math.sub" (func $exports/math.sub)) - (export "Animal.CAT" (global $exports/Animal.CAT)) - (export "Animal.DOG" (global $exports/Animal.DOG)) - (export "animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "Car" (global $exports/Car)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) - (export "outer.inner.a" (global $exports/outer.inner.a)) - (export "renamed_mul" (func $export/mul)) - (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (export "Car#get:doors" (func $export:exports/Car#get:doors)) - (export "Car#set:doors" (func $export:exports/Car#set:doors)) - (export "Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $export:exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $export:exports/Car#set:numDoors)) - (export "Car#openDoors" (func $export:exports/Car#openDoors)) - (export "vehicles.Car#get:doors" (func $export:exports/vehicles.Car#get:doors)) - (export "vehicles.Car#set:doors" (func $export:exports/vehicles.Car#set:doors)) - (export "vehicles.Car#constructor" (func $export:exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $export:exports/vehicles.Car#get:numDoors)) - (export "vehicles.Car#set:numDoors" (func $export:exports/vehicles.Car#set:numDoors)) - (export "vehicles.Car#openDoors" (func $export:exports/vehicles.Car#openDoors)) - (start $~start) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/math.sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - global.get $exports/Car.TIRES - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 224 - i32.const 288 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 96 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 96 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $exports/Car#set:doors - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES - ) - (func $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - ) - (func $exports/vehicles.Car#openDoors (param $0 i32) - nop - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/subOpt@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 - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/subOpt - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor - ) - (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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $exports/vehicles.Car - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $exports/vehicles.Car $invalid - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (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 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 16864 - i32.const 16912 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $exports/Car#set:doors - local.get $0 - local.get $1 - call $exports/Car#set:doors - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $exports/vehicles.Car#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $exports/Car#get:doors - 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:exports/Car#set:doors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#set:doors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/Car#get:numDoors (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 $exports/Car#get:numDoors - 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:exports/Car#set:numDoors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#set:numDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#openDoors (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 $exports/Car#openDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $exports/vehicles.Car#get:doors - 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:exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/vehicles.Car#get:numDoors (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 $exports/vehicles.Car#get:numDoors - 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:exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:numDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#openDoors (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 $exports/vehicles.Car#openDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) -) diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.debug.wat similarity index 91% rename from tests/compiler/exportstar-rereexport.untouched.wat rename to tests/compiler/exportstar-rereexport.debug.wat index b78191f004..516897df76 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.debug.wat @@ -28,8 +28,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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)) @@ -57,14 +56,6 @@ (export "renamed_renamed_b" (global $export/b)) (export "default" (func $export-default/theDefault)) (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) (export "memory" (memory $0)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) @@ -2107,237 +2098,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2387,7 +2147,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $exports/Car#get:numDoors (param $0 i32) (result i32) @@ -2400,17 +2160,6 @@ (func $export-default/theDefault nop ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) i32.const 272 diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.release.wat similarity index 96% rename from tests/compiler/exportstar-rereexport.optimized.wat rename to tests/compiler/exportstar-rereexport.release.wat index d0902ec05e..876eadac0a 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -1,6 +1,5 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) @@ -10,7 +9,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -48,26 +46,8 @@ (export "renamed_renamed_b" (global $export/b)) (export "default" (func $export-default/theDefault)) (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export-default/theDefault)) - (export "exportstar.default.two" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -1046,11 +1026,6 @@ (func $export-default/theDefault nop ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $exports/Car @@ -1459,33 +1434,8 @@ i32.const 20 i32.add local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub i32.const 0 - i32.store8 + i32.store align=1 local.get $2 local.get $0 i32.store diff --git a/tests/compiler/exportstar.untouched.wat b/tests/compiler/exportstar.debug.wat similarity index 84% rename from tests/compiler/exportstar.untouched.wat rename to tests/compiler/exportstar.debug.wat index 75fdad29c7..e28ed478ea 100644 --- a/tests/compiler/exportstar.untouched.wat +++ b/tests/compiler/exportstar.debug.wat @@ -1,6 +1,5 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -16,8 +15,6 @@ (export "a" (global $export/a)) (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.two)) - (export "default.two" (func $export/ns.two)) (export "memory" (memory $0)) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -34,10 +31,4 @@ local.get $1 i32.mul ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) ) diff --git a/tests/compiler/export.optimized.wat b/tests/compiler/exportstar.release.wat similarity index 83% rename from tests/compiler/export.optimized.wat rename to tests/compiler/exportstar.release.wat index 00423435e6..a785e0e68b 100644 --- a/tests/compiler/export.optimized.wat +++ b/tests/compiler/exportstar.release.wat @@ -1,6 +1,5 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -11,8 +10,6 @@ (export "a" (global $export/a)) (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.one)) - (export "default.two" (func $export/ns.one)) (export "memory" (memory $0)) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -29,7 +26,4 @@ local.get $1 i32.mul ) - (func $export/ns.one - nop - ) ) diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/extends-baseaggregate.debug.wat similarity index 80% rename from tests/compiler/implicit-getter-setter.untouched.wat rename to tests/compiler/extends-baseaggregate.debug.wat index 54685f8625..19c77a4b63 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/extends-baseaggregate.debug.wat @@ -2,13 +2,16 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $extends-baseaggregate/poolB i32 (i32.const 64)) + (global $extends-baseaggregate/poolA i32 (i32.const 144)) (global $~lib/rt/itcms/total (mut 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,35 +25,31 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $implicit-getter-setter/Basic i32 (i32.const 3)) - (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 460)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16844)) - (global $~lib/memory/__heap_base i32 (i32.const 16844)) + (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 748)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) + (global $~lib/memory/__heap_base i32 (i32.const 17132)) (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\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 (i32.const 12) "\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") + (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\07\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 (i32.const 92) "\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") + (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\08\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 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 672) "\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\04\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) (elem $0 (i32.const 1)) - (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Managed" (global $implicit-getter-setter/Managed)) (export "memory" (memory $0)) - (export "Basic#get:val" (func $export:implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $export:implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $export:implicit-getter-setter/Basic#constructor)) - (export "Managed#get:foo" (func $export:implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $export:implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $export:implicit-getter-setter/Managed#constructor)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 @@ -112,7 +111,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 256 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -178,7 +177,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 256 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -195,7 +194,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 256 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -217,8 +216,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 384 + i32.const 448 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -284,7 +283,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 256 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -410,7 +409,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -430,7 +429,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -493,7 +492,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -625,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -642,7 +641,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -722,7 +721,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -765,7 +764,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -783,7 +782,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -851,7 +850,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -956,7 +955,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -999,7 +998,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -1032,7 +1031,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -1275,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1497,7 +1496,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 256 i32.const 228 i32.const 20 call $~lib/builtins/abort @@ -1603,8 +1602,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 192 + i32.const 528 i32.const 458 i32.const 29 call $~lib/builtins/abort @@ -1688,7 +1687,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1753,7 +1752,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1904,7 +1903,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -2013,7 +2012,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -2033,7 +2032,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 528 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -2072,237 +2071,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2310,8 +2078,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 192 + i32.const 256 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -2352,17 +2120,18 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) - (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) + (func $extends-baseaggregate/A1#set:padding0 (param $0 i32) (param $1 f64) local.get $0 local.get $1 - i32.store + f64.store ) - (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) + (func $extends-baseaggregate/A1#set:padding1 (param $0 i32) (param $1 f64) local.get $0 - i32.load + local.get $1 + f64.store offset=8 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2379,7 +2148,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 256 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -2432,146 +2201,490 @@ end end ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) + (func $extends-baseaggregate/A1#set:c1 (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store offset=16 local.get $0 local.get $1 i32.const 0 call $~lib/rt/itcms/__link ) - (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - local.get $0 - 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) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 i32.load - local.tee $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u if local.get $2 local.get $1 - call $~lib/rt/itcms/__visit + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 ) - (func $implicit-getter-setter/Managed~visit (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load - local.tee $2 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u if + local.get $1 + i32.const 1073741820 local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 592 + i32.const 640 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $implicit-getter-setter/Managed - block $implicit-getter-setter/Basic - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + call $~lib/array/Array#set:length_ + local.get $3 + ) + (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 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=16 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~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 + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $implicit-getter-setter/Basic $implicit-getter-setter/Managed $invalid + 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 $~lib/arraybuffer/ArrayBufferView~visit + 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 $implicit-getter-setter/Managed~visit + call $~lib/array/Array~visit return 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 + call $start:extends-baseaggregate ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if - i32.const 16864 - i32.const 16912 + i32.const 17152 + i32.const 17200 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) + (func $start:extends-baseaggregate + (local $0 i32) + (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + 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 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 $extends-baseaggregate/poolA + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $implicit-getter-setter/Basic#set:val - local.get $0 + local.get $2 + i32.const 0 + call $extends-baseaggregate/A2#constructor 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#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $extends-baseaggregate/A1#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2584,35 +2697,22 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store end local.get $0 - local.get $1 - call $implicit-getter-setter/Managed#set:foo + f64.const 0 + call $extends-baseaggregate/A1#set:padding0 local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + f64.const 0 + call $extends-baseaggregate/A1#set:padding1 local.get $0 - i32.store + i32.const 0 + call $extends-baseaggregate/A1#set:c1 local.get $0 - call $implicit-getter-setter/Basic#get:val local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2620,55 +2720,32 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $export:implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $implicit-getter-setter/Basic#set:val - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $extends-baseaggregate/A2#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store local.get $0 - local.get $1 - call $implicit-getter-setter/Basic#constructor - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer local.get $0 + call $extends-baseaggregate/A1#constructor + local.tee $0 i32.store local.get $0 - call $implicit-getter-setter/Managed#get:foo local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2676,47 +2753,4 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $export:implicit-getter-setter/Managed#set:foo (param $0 i32) (param $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 - 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 $implicit-getter-setter/Managed#set:foo - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $implicit-getter-setter/Managed#constructor - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) ) diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat new file mode 100644 index 0000000000..032fc360fc --- /dev/null +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -0,0 +1,1916 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (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 18156)) + (memory $0 1) + (data (i32.const 1036) "\1c") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\07\00\00\00\10\00\00\00 \04\00\00 \04") + (data (i32.const 1116) "\1c") + (data (i32.const 1148) ",") + (data (i32.const 1160) "\08\00\00\00\10\00\00\00p\04\00\00p\04") + (data (i32.const 1196) "<") + (data (i32.const 1208) "\01\00\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 (i32.const 1260) "<") + (data (i32.const 1272) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1388) "<") + (data (i32.const 1400) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1452) ",") + (data (i32.const 1464) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1532) "<") + (data (i32.const 1544) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1596) ",") + (data (i32.const 1608) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1644) ",") + (data (i32.const 1656) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1696) "\t\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1752) "\04\00\00\00\02A\00\00\00\00\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1168 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1408 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1616 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1216 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 159 + 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) + global.get $~lib/rt/itcms/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18156 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1696 + i32.load + local.get $1 + i32.lt_u + if + i32.const 1408 + i32.const 1472 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1700 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (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 $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + 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 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + 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 1552 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + 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 1552 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1552 + 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 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 18160 + i32.const 0 + i32.store + i32.const 19728 + 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 18160 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 18160 + 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 18160 + i32.const 19732 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18160 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18156 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18156 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + 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 18156 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + 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 $3 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $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 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1216 + i32.const 1280 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $2 + i32.const 12 + i32.le_u + select + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + 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 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $5 + i32.add + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + 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 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $5 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 498 + 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 $3 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $6 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $3 + i32.const 2 + i32.and + local.get $5 + i32.or + i32.store + local.get $5 + local.get $2 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $6 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $~lib/array/Array $~lib/array/Array $invalid + 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 + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=16 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18156 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + end + local.get $5 + f64.const 0 + f64.store + local.get $5 + f64.const 0 + f64.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + 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 $5 + i32.store offset=4 + i32.const 1180 + i32.load + local.tee $3 + i32.const 1 + i32.add + local.tee $4 + i32.const 1176 + i32.load + local.tee $0 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + i32.const 1073741820 + local.get $0 + i32.const 1073741820 + i32.lt_u + select + local.tee $0 + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $0 + local.get $1 + i32.gt_u + select + local.tee $2 + i32.const 1168 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $2 + i32.store offset=16 + local.get $1 + local.set $0 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $2 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 + local.get $2 + local.get $6 + i32.load offset=16 + local.tee $6 + local.get $2 + local.get $6 + i32.lt_u + select + memory.copy + end + local.get $0 + local.get $1 + i32.ne + if + i32.const 1168 + local.get $0 + i32.store + i32.const 1172 + local.get $0 + i32.store + local.get $0 + if + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + end + i32.const 1176 + local.get $2 + i32.store + end + i32.const 1172 + i32.load + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $5 + if + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 1180 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + i32.const 1152 + i32.load + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 1148 + local.get $0 + local.get $1 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) +) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat deleted file mode 100644 index e839a9c359..0000000000 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ /dev/null @@ -1,4241 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $extends-baseaggregate/poolB i32 (i32.const 64)) - (global $extends-baseaggregate/poolA i32 (i32.const 144)) - (global $~lib/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 672)) - (global $~lib/memory/__data_end i32 (i32.const 748)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) - (global $~lib/memory/__heap_base i32 (i32.const 17132)) - (memory $0 1) - (data (i32.const 12) "\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") - (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\07\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 (i32.const 92) "\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") - (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\08\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 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 672) "\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\04\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 384 - i32.const 448 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 256 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 256 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 192 - i32.const 528 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 192 - i32.const 256 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $extends-baseaggregate/A1#set:padding0 (param $0 i32) (param $1 f64) - local.get $0 - local.get $1 - f64.store - ) - (func $extends-baseaggregate/A1#set:padding1 (param $0 i32) (param $1 f64) - local.get $0 - local.get $1 - f64.store offset=8 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $extends-baseaggregate/A1#set:c1 (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtSize - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $3 - local.get $3 - local.get $0 - local.get $1 - local.tee $4 - local.get $2 - i32.load offset=16 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_u - select - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $4 - local.get $1 - local.get $4 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 592 - i32.const 640 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $5 - local.get $1 - local.tee $6 - i32.const 8 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $2 - i32.shl - local.set $6 - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1073741820 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_u - select - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.gt_u - select - local.set $6 - end - local.get $5 - local.get $6 - call $~lib/rt/itcms/__renew - local.set $8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $8 - local.get $5 - i32.ne - if - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - i32.store offset=4 - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=8 - end - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (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 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=16 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (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#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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 - 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 $~start - call $start:extends-baseaggregate - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 17152 - i32.const 17200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:extends-baseaggregate - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - 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 $extends-baseaggregate/poolA - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 0 - call $extends-baseaggregate/A2#constructor - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $extends-baseaggregate/A1#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - f64.const 0 - call $extends-baseaggregate/A1#set:padding0 - local.get $0 - f64.const 0 - call $extends-baseaggregate/A1#set:padding1 - local.get $0 - i32.const 0 - call $extends-baseaggregate/A1#set:c1 - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $extends-baseaggregate/A2#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $extends-baseaggregate/A1#constructor - local.tee $0 - i32.store - local.get $0 - 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-recursive.debug.wat b/tests/compiler/extends-recursive.debug.wat new file mode 100644 index 0000000000..fcf88db03c --- /dev/null +++ b/tests/compiler/extends-recursive.debug.wat @@ -0,0 +1,2365 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (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/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 460)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16844)) + (global $~lib/memory/__heap_base i32 (i32.const 16844)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 96 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 96 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 32 + i32.const 96 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $start:extends-recursive + 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 + 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-recursive/Child $extends-recursive/Parent $invalid + 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16864 + i32.const 16912 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $extends-recursive/Parent#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $extends-recursive/Parent#set:child + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $extends-recursive/Child#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $extends-recursive/Parent#constructor + local.tee $0 + i32.store + local.get $0 + 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-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat deleted file mode 100644 index 59bdece94e..0000000000 --- a/tests/compiler/extends-recursive.optimized.wat +++ /dev/null @@ -1,1659 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (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 $extends-recursive/Child i32 (i32.const 3)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1292) ",") - (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1440) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1472) "\04") - (export "Child" (global $extends-recursive/Child)) - (export "memory" (memory $0)) - (export "Child#get:child" (func $export:extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $export:extends-recursive/Parent#set:child)) - (export "Child#constructor" (func $export:extends-recursive/Child#constructor)) - (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 159 - 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) - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17872 - i32.const 0 - i32.store - i32.const 19440 - 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 17872 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17872 - 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 17872 - i32.const 19444 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17872 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17868 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - 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 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $1 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - 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.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $4 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $4 - 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 $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17868 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) - (func $export:extends-recursive/Parent#get:child (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $1 - if - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:extends-recursive/Child#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) -) diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat new file mode 100644 index 0000000000..5c204c2c0f --- /dev/null +++ b/tests/compiler/extends-recursive.release.wat @@ -0,0 +1,1496 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (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 17868)) + (memory $0 1) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") + (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1228) "<") + (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1292) ",") + (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1372) "<") + (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1440) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1472) "\04") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 159 + 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/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 $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 17872 + 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 17872 + i32.const 19444 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17872 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + 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 17868 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + 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 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $1 + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $4 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $4 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $4 + 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 $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + block $__inlined_func$start:extends-recursive + memory.size + i32.const 16 + i32.shl + i32.const 17868 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + 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 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:extends-recursive + end + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17868 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $1 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) +) diff --git a/tests/compiler/extends-recursive.ts b/tests/compiler/extends-recursive.ts index 2deae0ab2e..f834cda68d 100644 --- a/tests/compiler/extends-recursive.ts +++ b/tests/compiler/extends-recursive.ts @@ -1,4 +1,6 @@ class Parent { child: Child | null = null; } -export class Child extends Parent { } +class Child extends Parent { } + +new Child(); diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat deleted file mode 100644 index 1e77d96a2a..0000000000 --- a/tests/compiler/extends-recursive.untouched.wat +++ /dev/null @@ -1,2658 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $extends-recursive/Child i32 (i32.const 3)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 460)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16844)) - (global $~lib/memory/__heap_base i32 (i32.const 16844)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "Child" (global $extends-recursive/Child)) - (export "memory" (memory $0)) - (export "Child#get:child" (func $export:extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $export:extends-recursive/Parent#set:child)) - (export "Child#constructor" (func $export:extends-recursive/Child#constructor)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 224 - i32.const 288 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 96 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 96 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $extends-recursive/Parent#get:child (param $0 i32) (result i32) - local.get $0 - 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-recursive/Child $extends-recursive/Parent $invalid - 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 - 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 16864 - i32.const 16912 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $extends-recursive/Parent#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $extends-recursive/Parent#set:child - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $extends-recursive/Child#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $extends-recursive/Parent#constructor - local.tee $0 - i32.store - local.get $0 - 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:extends-recursive/Parent#get:child (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $extends-recursive/Parent#get:child - 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:extends-recursive/Parent#set:child (param $0 i32) (param $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 - 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 $extends-recursive/Parent#set:child - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:extends-recursive/Child#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $extends-recursive/Child#constructor - 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/external.untouched.wat b/tests/compiler/external.debug.wat similarity index 86% rename from tests/compiler/external.untouched.wat rename to tests/compiler/external.debug.wat index 8931a5f95f..7aac5baa57 100644 --- a/tests/compiler/external.untouched.wat +++ b/tests/compiler/external.debug.wat @@ -2,7 +2,6 @@ (type $none_=>_none (func)) (import "foo" "var" (global $external/var_ i32)) (import "external" "foo" (func $external/foo)) - (import "external" "foo.bar" (func $external/foo.bar)) (import "external" "bar" (func $external/two)) (import "foo" "baz" (func $external/three)) (global $~lib/memory/__data_end i32 (i32.const 8)) @@ -12,7 +11,6 @@ (table $0 1 funcref) (elem $0 (i32.const 1)) (export "foo" (func $external/foo)) - (export "foo.bar" (func $external/foo.bar)) (export "two" (func $external/two)) (export "three" (func $external/three)) (export "var_" (global $external/var_)) diff --git a/tests/compiler/external.js b/tests/compiler/external.js index 503cde0fa0..1bab69af70 100644 --- a/tests/compiler/external.js +++ b/tests/compiler/external.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.external = { foo: function() { /* nop */ }, "foo.bar": function() { /* nop */ }, @@ -8,4 +8,4 @@ exports.preInstantiate = function(imports, exports) { baz: function() { /* nop */ }, "var": 3 }; -}; +} diff --git a/tests/compiler/external.optimized.wat b/tests/compiler/external.release.wat similarity index 81% rename from tests/compiler/external.optimized.wat rename to tests/compiler/external.release.wat index 1c1024e481..4ce1f3c834 100644 --- a/tests/compiler/external.optimized.wat +++ b/tests/compiler/external.release.wat @@ -2,12 +2,10 @@ (type $none_=>_none (func)) (import "foo" "var" (global $external/var_ i32)) (import "external" "foo" (func $external/foo)) - (import "external" "foo.bar" (func $external/foo.bar)) (import "external" "bar" (func $external/two)) (import "foo" "baz" (func $external/three)) (memory $0 0) (export "foo" (func $external/foo)) - (export "foo.bar" (func $external/foo.bar)) (export "two" (func $external/two)) (export "three" (func $external/three)) (export "var_" (global $external/var_)) diff --git a/tests/compiler/external.ts b/tests/compiler/external.ts index a45aaffd49..2ce590e009 100644 --- a/tests/compiler/external.ts +++ b/tests/compiler/external.ts @@ -1,7 +1,4 @@ export declare function foo(): void; // external , foo -export declare namespace foo { - export function bar(): void; // external , foo.bar -} @external("bar") export declare function two(): void; // external , bar diff --git a/tests/compiler/features/README.md b/tests/compiler/features/README.md index 883099ce5e..30ac70c4d5 100644 --- a/tests/compiler/features/README.md +++ b/tests/compiler/features/README.md @@ -1 +1 @@ -Test cases for post-MVP WebAssembly features. \ No newline at end of file +Test cases for future WebAssembly features. diff --git a/tests/compiler/issues/1751.untouched.wat b/tests/compiler/features/exception-handling.debug.wat similarity index 100% rename from tests/compiler/issues/1751.untouched.wat rename to tests/compiler/features/exception-handling.debug.wat diff --git a/tests/compiler/features/exception-handling.json b/tests/compiler/features/exception-handling.json new file mode 100644 index 0000000000..dfa6f975e5 --- /dev/null +++ b/tests/compiler/features/exception-handling.json @@ -0,0 +1,5 @@ +{ + "features": [ + "exception-handling" + ] +} diff --git a/tests/compiler/function.optimized.wat b/tests/compiler/features/exception-handling.release.wat similarity index 100% rename from tests/compiler/function.optimized.wat rename to tests/compiler/features/exception-handling.release.wat diff --git a/tests/compiler/features/exception-handling.ts b/tests/compiler/features/exception-handling.ts new file mode 100644 index 0000000000..70b786d12e --- /dev/null +++ b/tests/compiler/features/exception-handling.ts @@ -0,0 +1 @@ +// TODO diff --git a/tests/compiler/features/gc.untouched.wat b/tests/compiler/features/gc.debug.wat similarity index 100% rename from tests/compiler/features/gc.untouched.wat rename to tests/compiler/features/gc.debug.wat diff --git a/tests/compiler/features/gc.json b/tests/compiler/features/gc.json index ed1300131d..f90012c0fb 100644 --- a/tests/compiler/features/gc.json +++ b/tests/compiler/features/gc.json @@ -3,7 +3,7 @@ "gc" ], "asc_flags": [ - "--explicitStart", + "--exportStart", "_start", "--noValidate" ], "skipInstantiate": true diff --git a/tests/compiler/features/gc.optimized.wat b/tests/compiler/features/gc.release.wat similarity index 100% rename from tests/compiler/features/gc.optimized.wat rename to tests/compiler/features/gc.release.wat diff --git a/tests/compiler/features/js-bigint-integration.json b/tests/compiler/features/js-bigint-integration.json deleted file mode 100644 index e8e76ac898..0000000000 --- a/tests/compiler/features/js-bigint-integration.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "features": [ - "bigint-integration" - ], - "asc_flags": [ - "--explicitStart" - ] -} diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat deleted file mode 100644 index 66c0fd825a..0000000000 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ /dev/null @@ -1,50 +0,0 @@ -(module - (type $none_=>_i64 (func (result i64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) - (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) - (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~started (mut i32) (i32.const 0)) - (memory $0 1) - (data (i32.const 1036) "\\") - (data (i32.const 1048) "\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") - (export "internalValue" (global $features/js-bigint-integration/internalValue)) - (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) - (export "memory" (memory $0)) - (export "_start" (func $~start)) - (func $features/js-bigint-integration/getInternalValue (result i64) - i64.const 9007199254740991 - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - global.get $features/js-bigint-integration/externalValue - i64.const 9007199254740991 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $features/js-bigint-integration/getExternalValue - global.get $features/js-bigint-integration/externalValue - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat deleted file mode 100644 index 6701fd6e66..0000000000 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ /dev/null @@ -1,59 +0,0 @@ -(module - (type $none_=>_i64 (func (result i64))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) - (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~lib/memory/__data_end i32 (i32.const 108)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16492)) - (global $~lib/memory/__heap_base i32 (i32.const 16492)) - (global $~started (mut i32) (i32.const 0)) - (memory $0 1) - (data (i32.const 12) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\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\00\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "internalValue" (global $features/js-bigint-integration/internalValue)) - (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) - (export "memory" (memory $0)) - (export "_start" (func $~start)) - (func $start:features/js-bigint-integration - global.get $features/js-bigint-integration/externalValue - i64.const 9007199254740991 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $features/js-bigint-integration/getExternalValue - global.get $features/js-bigint-integration/externalValue - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/js-bigint-integration/getInternalValue (result i64) - global.get $features/js-bigint-integration/internalValue - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:features/js-bigint-integration - ) -) diff --git a/tests/compiler/features/mutable-globals.json b/tests/compiler/features/mutable-globals.json deleted file mode 100644 index b227d5c3d9..0000000000 --- a/tests/compiler/features/mutable-globals.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "features": [ - "mutable-globals" - ], - "asc_flags": [ - "--explicitStart" - ] -} diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat deleted file mode 100644 index 9138b7a324..0000000000 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ /dev/null @@ -1,86 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $features/mutable-globals/internal (mut i32) (i32.const 124)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) - (global $~lib/memory/__heap_base i32 (i32.const 16476)) - (global $~started (mut i32) (i32.const 0)) - (memory $0 1) - (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\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") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "external" (global $features/mutable-globals/external)) - (export "internal" (global $features/mutable-globals/internal)) - (export "memory" (memory $0)) - (export "_start" (func $~start)) - (func $start:features/mutable-globals - global.get $features/mutable-globals/external - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 124 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/external - i32.const 10 - i32.add - global.set $features/mutable-globals/external - global.get $features/mutable-globals/internal - i32.const 10 - i32.add - global.set $features/mutable-globals/internal - global.get $features/mutable-globals/external - i32.const 133 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 134 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:features/mutable-globals - ) -) diff --git a/tests/compiler/features/nontrapping-f2i.json b/tests/compiler/features/nontrapping-f2i.json deleted file mode 100644 index 1e3d40d020..0000000000 --- a/tests/compiler/features/nontrapping-f2i.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "features": [ - "nontrapping-f2i" - ], - "asc_flags": [ - "--explicitStart" - ] -} diff --git a/tests/compiler/features/not-supported.json b/tests/compiler/features/not-supported.json index 0c149610ab..c00b1eca4d 100644 --- a/tests/compiler/features/not-supported.json +++ b/tests/compiler/features/not-supported.json @@ -1,5 +1,6 @@ { "asc_flags": [ + "--disable", "simd" ], "stderr": [ "AS103: Feature 'simd' is not enabled.", diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.debug.wat similarity index 83% rename from tests/compiler/features/reference-types.untouched.wat rename to tests/compiler/features/reference-types.debug.wat index 5bd3683a6a..0f89b35fd6 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.debug.wat @@ -2,17 +2,9 @@ (type $none_=>_none (func)) (type $none_=>_externref (func (result externref))) (type $externref_=>_externref (func (param externref) (result externref))) - (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $externref_=>_none (func (param externref))) - (type $externref_externref_=>_externref (func (param externref externref) (result externref))) - (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) - (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) - (import "Reflect" "has" (func $~lib/bindings/Reflect/has (param externref externref) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "console" "log" (func $~lib/bindings/console/log (param externref))) - (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (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 $features/reference-types/funcGlobal (mut funcref) (ref.null func)) @@ -47,7 +39,7 @@ if i32.const 0 i32.const 32 - i32.const 94 + i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable @@ -62,7 +54,7 @@ if i32.const 0 i32.const 32 - i32.const 96 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable @@ -77,7 +69,7 @@ if i32.const 0 i32.const 32 - i32.const 98 + i32.const 81 i32.const 3 call $~lib/builtins/abort unreachable @@ -94,7 +86,7 @@ if i32.const 0 i32.const 32 - i32.const 94 + i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable @@ -109,7 +101,7 @@ if i32.const 0 i32.const 32 - i32.const 96 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable @@ -124,7 +116,7 @@ if i32.const 0 i32.const 32 - i32.const 98 + i32.const 81 i32.const 3 call $~lib/builtins/abort unreachable @@ -141,7 +133,7 @@ if i32.const 0 i32.const 32 - i32.const 94 + i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable @@ -156,7 +148,7 @@ if i32.const 0 i32.const 32 - i32.const 96 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable @@ -171,7 +163,7 @@ if i32.const 0 i32.const 32 - i32.const 98 + i32.const 81 i32.const 3 call $~lib/builtins/abort unreachable @@ -182,28 +174,6 @@ ) (func $start:features/reference-types (local $0 funcref) - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/has - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/reference-types/someObject - call $~lib/bindings/console/log - global.get $features/reference-types/someKey - call $~lib/bindings/console/log - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/get - call $~lib/bindings/console/log call $features/reference-types/somethingReal ref.is_null i32.eqz @@ -214,7 +184,7 @@ if i32.const 0 i32.const 32 - i32.const 33 + i32.const 16 i32.const 3 call $~lib/builtins/abort unreachable @@ -232,7 +202,7 @@ if i32.const 0 i32.const 32 - i32.const 38 + i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable @@ -249,7 +219,7 @@ if i32.const 0 i32.const 32 - i32.const 43 + i32.const 26 i32.const 3 call $~lib/builtins/abort unreachable @@ -264,7 +234,7 @@ if i32.const 0 i32.const 32 - i32.const 46 + i32.const 29 i32.const 3 call $~lib/builtins/abort unreachable @@ -278,7 +248,7 @@ if i32.const 0 i32.const 32 - i32.const 72 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable @@ -293,7 +263,7 @@ if i32.const 0 i32.const 32 - i32.const 74 + i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable @@ -308,7 +278,7 @@ if i32.const 0 i32.const 32 - i32.const 76 + i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable @@ -321,7 +291,7 @@ if i32.const 0 i32.const 32 - i32.const 79 + i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable @@ -336,7 +306,7 @@ if i32.const 0 i32.const 32 - i32.const 81 + i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable @@ -351,7 +321,7 @@ if i32.const 0 i32.const 32 - i32.const 83 + i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable @@ -364,7 +334,7 @@ if i32.const 0 i32.const 32 - i32.const 86 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable @@ -379,7 +349,7 @@ if i32.const 0 i32.const 32 - i32.const 88 + i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable @@ -394,7 +364,7 @@ if i32.const 0 i32.const 32 - i32.const 90 + i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable @@ -409,7 +379,7 @@ if i32.const 0 i32.const 32 - i32.const 108 + i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable @@ -421,7 +391,7 @@ if i32.const 0 i32.const 32 - i32.const 110 + i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable @@ -434,7 +404,7 @@ if i32.const 0 i32.const 32 - i32.const 113 + i32.const 96 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/reference-types.js b/tests/compiler/features/reference-types.js index 078c91423f..9bbc05cd27 100644 --- a/tests/compiler/features/reference-types.js +++ b/tests/compiler/features/reference-types.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.Reflect = Reflect; imports.console = { log: function(ref) { @@ -20,4 +20,4 @@ exports.preInstantiate = function(imports, exports) { }, someKey: "theKey" }; -}; +} diff --git a/tests/compiler/features/reference-types.json b/tests/compiler/features/reference-types.json index 8f72a8bff4..44dbffd87b 100644 --- a/tests/compiler/features/reference-types.json +++ b/tests/compiler/features/reference-types.json @@ -1,7 +1,6 @@ { "features": [ "reference-types", - "exception-handling", "gc" ], "asc_flags": [ diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.release.wat similarity index 63% rename from tests/compiler/features/reference-types.optimized.wat rename to tests/compiler/features/reference-types.release.wat index 361e384253..e6d211b914 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.release.wat @@ -2,21 +2,12 @@ (type $none_=>_externref (func (result externref))) (type $none_=>_none (func)) (type $externref_=>_externref (func (param externref) (result externref))) - (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $externref_=>_none (func (param externref))) - (type $externref_externref_=>_externref (func (param externref externref) (result externref))) - (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) - (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) - (import "Reflect" "has" (func $~lib/bindings/Reflect/has (param externref externref) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "console" "log" (func $~lib/bindings/console/log (param externref))) - (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (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 $features/reference-types/funcGlobal (mut funcref) (ref.null func)) - (global $features/reference-types/externGlobal (mut externref) (ref.null extern)) (global $features/reference-types/anyGlobal (mut anyref) (ref.null any)) (memory $0 1) (data (i32.const 1036) "L") @@ -38,32 +29,12 @@ call $features/reference-types/external ) (func $~start - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/has - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/reference-types/someObject - call $~lib/bindings/console/log - global.get $features/reference-types/someKey - call $~lib/bindings/console/log - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/get - call $~lib/bindings/console/log call $features/reference-types/somethingReal ref.is_null if i32.const 0 i32.const 1056 - i32.const 33 + i32.const 16 i32.const 3 call $~lib/builtins/abort unreachable @@ -74,7 +45,7 @@ if i32.const 0 i32.const 1056 - i32.const 38 + i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable @@ -84,7 +55,7 @@ if i32.const 0 i32.const 1056 - i32.const 43 + i32.const 26 i32.const 3 call $~lib/builtins/abort unreachable @@ -95,7 +66,7 @@ if i32.const 0 i32.const 1056 - i32.const 46 + i32.const 29 i32.const 3 call $~lib/builtins/abort unreachable @@ -106,33 +77,20 @@ if i32.const 0 i32.const 1056 - i32.const 72 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end ref.null func global.set $features/reference-types/funcGlobal - global.get $features/reference-types/externGlobal - ref.is_null - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ref.null extern - global.set $features/reference-types/externGlobal global.get $features/reference-types/anyGlobal ref.is_null i32.eqz if i32.const 0 i32.const 1056 - i32.const 86 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index 3fdcf874ff..2d03fd2303 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -11,23 +11,6 @@ export function internal(a: externref): externref { return d; } -// can use reflection to work with externref values - -import * as Reflect from "bindings/Reflect"; - -declare const someObject: externref; -declare const someKey: externref; - -assert(Reflect.has(someObject, someKey)); - -// can call JS bindings with externref values - -import * as console from "bindings/console"; - -console.log(someObject); -console.log(someKey); -console.log(Reflect.get(someObject, someKey)); - // Truthiness conversion if(!somethingReal()) { assert(false); @@ -48,20 +31,20 @@ if(somethingNull()) { // Explicit null checks (don’t work yet) /* -if(somethingReal() !== null) { +if(somethingReal() != null) { // nop } else { assert(false); } -if(somethingReal() === null) { +if(somethingReal() == null) { assert(false); } -if(somethingNull() === null) { +if(somethingNull() == null) { // nop } else { assert(false); } -if(somethingNull() !== null) { +if(somethingNull() != null) { assert(false); } */ diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.debug.wat similarity index 99% rename from tests/compiler/features/threads.untouched.wat rename to tests/compiler/features/threads.debug.wat index 8bffb922ca..8eab421228 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.debug.wat @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (global $~lib/ASC_FEATURE_THREADS i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_THREADS i32 (i32.const 1)) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) diff --git a/tests/compiler/features/threads.optimized.wat b/tests/compiler/features/threads.release.wat similarity index 100% rename from tests/compiler/features/threads.optimized.wat rename to tests/compiler/features/threads.release.wat diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.debug.wat similarity index 95% rename from tests/compiler/field-initialization.untouched.wat rename to tests/compiler/field-initialization.debug.wat index 9eeb4a40b4..dbb61e8609 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.debug.wat @@ -23,9 +23,9 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/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 972)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17356)) @@ -2072,237 +2072,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2352,7 +2121,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $field-initialization/Value_Init#set:a (param $0 i32) (param $1 i32) @@ -3115,20 +2884,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 + i32.const 0 + i32.const 40 + memory.fill memory.size i32.const 16 i32.shl diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.release.wat similarity index 94% rename from tests/compiler/field-initialization.optimized.wat rename to tests/compiler/field-initialization.release.wat index de4c616b77..25a85465fc 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1282,7 +1282,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1297,7 +1297,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1310,7 +1310,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1318,7 +1318,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1329,16 +1329,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1349,16 +1349,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1366,7 +1366,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1374,8 +1374,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1392,7 +1392,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1402,13 +1402,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1421,40 +1421,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1514,182 +1514,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1904,20 +1733,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 - i64.const 0 - i64.store offset=32 + i32.const 0 + i32.const 40 + memory.fill memory.size i32.const 16 i32.shl @@ -3036,25 +2854,25 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.const 23 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store offset=24 - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -3067,28 +2885,28 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.const 24 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if diff --git a/tests/compiler/field.debug.wat b/tests/compiler/field.debug.wat new file mode 100644 index 0000000000..cef54831a7 --- /dev/null +++ b/tests/compiler/field.debug.wat @@ -0,0 +1,2546 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (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/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 500)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) + (global $~lib/memory/__heap_base i32 (i32.const 16884)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 412) "\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") + (data (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\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 96 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 96 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 32 + i32.const 96 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $field/NoStaticConflict#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $0 + memory.copy + end + local.get $3 + ) + (func $field/NoStaticConflict.a (param $0 i32) + nop + ) + (func $field/testNoStaticConflict + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field/NoStaticConflict#constructor + local.tee $0 + i32.store + local.get $0 + call $field/NoStaticConflict.a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__collect + (local $0 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 + local.set $0 + local.get $0 + 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 + local.set $0 + local.get $0 + 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:field + 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 + 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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $field/NoStaticConflict~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~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 + 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 $~start + call $start:field + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16912 + i32.const 16960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + local.get $3 + call $~lib/rt/__newBuffer + local.tee $5 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $field/NoStaticConflict#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 432 + call $~lib/rt/__newArray + call $field/NoStaticConflict#set:a + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) +) diff --git a/tests/compiler/field.optimized.wat b/tests/compiler/field.optimized.wat deleted file mode 100644 index c0fb5654d4..0000000000 --- a/tests/compiler/field.optimized.wat +++ /dev/null @@ -1,2848 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (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 17908)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1292) ",") - (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1436) "\1c") - (data (i32.const 1472) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1508) "\02A\00\00\00\00\00\00\02\t") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 159 - 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) - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17920 - i32.const 0 - i32.store - i32.const 19488 - 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 17920 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17920 - 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 17920 - i32.const 19492 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17920 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - 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 $3 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $5 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 12 - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $2 - i32.const 12 - i32.le_u - select - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - 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 $5 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $6 - i32.const 2 - i32.and - local.get $3 - i32.or - i32.store - local.get $3 - local.get $2 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $5 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1456 - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $5 - select - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $5 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $5 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 3 - i32.sub - local.set $5 - loop $while-continue|3 - local.get $5 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $2 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $3 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $2 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $4 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $5 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|4 - local.get $5 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $2 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $3 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $2 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $4 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|5 - local.get $5 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $2 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $3 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $2 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $4 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|5 - end - end - end - end - local.get $5 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $field/testNoStaticConflict - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $7 - i32.const 0 - i32.store - local.get $7 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $8 - i32.const 0 - i32.store - i32.const 1456 - local.set $1 - block $~lib/util/memory/memmove|inlined.0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $0 - i32.const 1456 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - i32.const 1456 - i32.eq - if - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - i32.const 1456 - i32.lt_u - if - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $6 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $0 - local.get $6 - i32.add - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.const 1456 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.const 1456 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $6 - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.const 1456 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $8 - local.get $4 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - local.get $4 - i32.store - local.get $4 - if - local.get $0 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $4 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $0 - i32.store - local.get $0 - if - local.get $5 - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 17936 - i32.const 17984 - 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<~lib/string/String> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner1 $invalid - end - return - end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $field/testNoStaticConflict - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) -) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/field.release.wat similarity index 80% rename from tests/compiler/implicit-getter-setter.optimized.wat rename to tests/compiler/field.release.wat index c51c8286ee..592f8a2351 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/field.release.wat @@ -1,8 +1,7 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -18,9 +17,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 $implicit-getter-setter/Basic i32 (i32.const 3)) - (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") @@ -32,17 +29,10 @@ (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1372) "<") (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1440) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1468) " ") - (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Managed" (global $implicit-getter-setter/Managed)) + (data (i32.const 1436) "\1c") + (data (i32.const 1472) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1508) "\02A\00\00\00\00\00\00\02\t") (export "memory" (memory $0)) - (export "Basic#get:val" (func $export:implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $export:implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $export:implicit-getter-setter/Basic#constructor)) - (export "Managed#get:foo" (func $export:implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $export:implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $export:implicit-getter-setter/Managed#constructor)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) @@ -122,7 +112,7 @@ if i32.const 0 local.get $0 - i32.const 17868 + i32.const 17908 i32.lt_u local.get $0 i32.load offset=8 @@ -172,7 +162,7 @@ if (result i32) i32.const 1 else - i32.const 1440 + i32.const 1472 i32.load local.get $1 i32.lt_u @@ -187,7 +177,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 1444 + i32.const 1476 i32.add i32.load i32.const 32 @@ -752,10 +742,10 @@ if unreachable end - i32.const 17872 + i32.const 17920 i32.const 0 i32.store - i32.const 19440 + i32.const 19488 i32.const 0 i32.store loop $for-loop|0 @@ -766,7 +756,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 17872 + i32.const 17920 i32.add i32.const 0 i32.store offset=4 @@ -784,7 +774,7 @@ i32.add i32.const 2 i32.shl - i32.const 17872 + i32.const 17920 i32.add i32.const 0 i32.store offset=96 @@ -802,13 +792,13 @@ br $for-loop|0 end end - i32.const 17872 - i32.const 19444 + i32.const 17920 + i32.const 19492 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 17872 + i32.const 17920 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -893,7 +883,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 17868 + i32.const 17908 i32.lt_u if local.get $0 @@ -993,7 +983,7 @@ unreachable end local.get $0 - i32.const 17868 + i32.const 17908 i32.lt_u if local.get $0 @@ -1016,7 +1006,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 17868 + i32.const 17908 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1076,17 +1066,82 @@ 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 $3 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl local.get $0 + 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 $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl local.get $0 @@ -1095,19 +1150,23 @@ 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 $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1117,9 +1176,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1133,23 +1192,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 1056 + i32.const 1120 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $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 @@ -1165,20 +1236,20 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $1 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl - local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1189,31 +1260,75 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $2 + i32.const 12 + i32.le_u + select + 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 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.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $5 + i32.add + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 i32.add 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,17 +1344,18 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1250,11 +1366,11 @@ unreachable end end - local.get $1 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 + local.get $5 i32.lt_u if i32.const 0 @@ -1264,92 +1380,108 @@ 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 $4 + local.set $3 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $3 + local.tee $6 i32.const 16 i32.ge_u if - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.const 2 i32.and - i32.const 28 + local.get $5 i32.or i32.store - local.get $1 - i32.const 32 + local.get $5 + local.get $2 + i32.const 4 i32.add - local.tee $4 - local.get $3 + i32.add + local.tee $3 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $4 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.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 4 + 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.get $1 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $2 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 @@ -1357,58 +1489,75 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 local.tee $1 i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $implicit-getter-setter/Basic - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $implicit-getter-setter/Basic $folding-inner0 $invalid - end - return + (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/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner1 $invalid + end + return + end + return end - return + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 end - return + unreachable end - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 i32.load @@ -1419,10 +1568,14 @@ end ) (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) memory.size i32.const 16 i32.shl - i32.const 17868 + i32.const 17908 i32.sub i32.const 1 i32.shr_u @@ -1451,250 +1604,147 @@ i32.store i32.const 1344 global.set $~lib/rt/itcms/fromSpace - ) - (func $export:implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $__inlined_func$field/testNoStaticConflict + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 i32.const 3 call $~lib/rt/itcms/__new local.tee $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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 1456 + i32.const 0 + memory.copy + local.get $2 + local.get $3 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$field/testNoStaticConflict end - local.get $0 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 i32.const 17936 + i32.const 17984 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - local.get $0 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end end - local.get $0 - local.get $1 - i32.store - local.get $1 + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - local.get $0 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link + call $~lib/rt/itcms/step + drop + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/field.untouched.wat b/tests/compiler/field.untouched.wat deleted file mode 100644 index 0b3da62555..0000000000 --- a/tests/compiler/field.untouched.wat +++ /dev/null @@ -1,4031 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 448)) - (global $~lib/memory/__data_end i32 (i32.const 500)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) - (global $~lib/memory/__heap_base i32 (i32.const 16884)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 412) "\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") - (data (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\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 224 - i32.const 288 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 96 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 96 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $field/NoStaticConflict#set:a (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $field/NoStaticConflict.a (param $0 i32) - nop - ) - (func $field/testNoStaticConflict - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $field/NoStaticConflict#constructor - local.tee $0 - i32.store - local.get $0 - call $field/NoStaticConflict.a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/itcms/__collect - (local $0 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 - local.set $0 - local.get $0 - 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 - local.set $0 - local.get $0 - 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:field - 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 - 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $field/NoStaticConflict~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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 - 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 $~start - call $start:field - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 16912 - i32.const 16960 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.shl - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.tee $5 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.set $6 - local.get $6 - local.get $5 - i32.store - local.get $6 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=4 - local.get $6 - local.get $4 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $6 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $field/NoStaticConflict#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.const 2 - i32.const 4 - i32.const 432 - call $~lib/rt/__newArray - call $field/NoStaticConflict#set:a - local.get $0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) -) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.debug.wat similarity index 93% rename from tests/compiler/for.untouched.wat rename to tests/compiler/for.debug.wat index 1e1cbea9db..5ac45c0543 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.debug.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -23,8 +23,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 484)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16868)) @@ -2489,237 +2488,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2769,7 +2537,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $for/testRef diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.release.wat similarity index 99% rename from tests/compiler/for.optimized.wat rename to tests/compiler/for.release.wat index 449ace1ed4..866daa10bd 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.release.wat @@ -1714,11 +1714,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.debug.wat similarity index 92% rename from tests/compiler/function-call.untouched.wat rename to tests/compiler/function-call.debug.wat index 4e98519326..7cdcb24b87 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.debug.wat @@ -4,8 +4,8 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -28,8 +28,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (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 812)) @@ -2097,237 +2096,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2377,7 +2145,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $function-call/Foo#fnVoid (param $0 i32) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.release.wat similarity index 99% rename from tests/compiler/function-call.optimized.wat rename to tests/compiler/function-call.release.wat index 61dbfbe950..1127d0eee8 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.release.wat @@ -1257,6 +1257,11 @@ local.get $0 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $function-call/Foo#fnVoid (param $0 i32) nop diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.debug.wat similarity index 94% rename from tests/compiler/function-expression.untouched.wat rename to tests/compiler/function-expression.debug.wat index f142d9be69..e3f259681d 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.debug.wat @@ -29,8 +29,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 1172)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17556)) @@ -2253,237 +2252,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2533,7 +2301,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.release.wat similarity index 98% rename from tests/compiler/function-expression.optimized.wat rename to tests/compiler/function-expression.release.wat index d018580cd3..bba5fab8b1 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.release.wat @@ -1196,7 +1196,6 @@ ) (func $function-expression/semanticallyAnonymous (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1214,10 +1213,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 2064 i32.store local.get $0 @@ -1280,16 +1278,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 2032 i32.store - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1298,7 +1296,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1524,34 +1522,9 @@ i32.const 20 i32.add local.tee $0 - local.tee $2 - i32.const 0 - i32.store8 - local.get $2 - i32.const 4 - i32.add - local.tee $4 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $2 i32.const 0 - i32.store8 offset=1 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $4 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $4 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $3 + i32.store align=1 + local.get $1 local.get $0 i32.store local.get $0 @@ -1580,7 +1553,7 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $2 + local.tee $1 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1591,7 +1564,7 @@ global.get $~lib/rt/itcms/state i32.const 1 i32.eq - local.get $2 + local.get $1 i32.const 3 i32.eq i32.and @@ -1605,7 +1578,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/function-inline-regressions.untouched.wat b/tests/compiler/function-inline-regressions.debug.wat similarity index 100% rename from tests/compiler/function-inline-regressions.untouched.wat rename to tests/compiler/function-inline-regressions.debug.wat diff --git a/tests/compiler/function-inline-regressions.optimized.wat b/tests/compiler/function-inline-regressions.release.wat similarity index 100% rename from tests/compiler/function-inline-regressions.optimized.wat rename to tests/compiler/function-inline-regressions.release.wat diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.debug.wat similarity index 100% rename from tests/compiler/function-types.untouched.wat rename to tests/compiler/function-types.debug.wat diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.release.wat similarity index 100% rename from tests/compiler/function-types.optimized.wat rename to tests/compiler/function-types.release.wat diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat deleted file mode 100644 index e177b73e98..0000000000 --- a/tests/compiler/function.untouched.wat +++ /dev/null @@ -1,141 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_i32_=>_i64 (func (param i64 i32) (result i64))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (global $~lib/memory/__data_end i32 (i32.const 8)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) - (global $~lib/memory/__heap_base i32 (i32.const 16392)) - (memory $0 0) - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $function/_ - nop - ) - (func $function/v - return - ) - (func $function/i (result i32) - i32.const 0 - ) - (func $function/j (result i64) - i64.const 0 - ) - (func $function/f (result f32) - f32.const 0 - ) - (func $function/d (result f64) - f64.const 0 - ) - (func $function/i_ (param $0 i32) - nop - ) - (func $function/iv (param $0 i32) - return - ) - (func $function/ii (param $0 i32) (result i32) - local.get $0 - ) - (func $function/jj (param $0 i64) (result i64) - local.get $0 - ) - (func $function/ff (param $0 f32) (result f32) - local.get $0 - ) - (func $function/dd (param $0 f64) (result f64) - local.get $0 - ) - (func $function/ii_ (param $0 i32) (param $1 i32) - nop - ) - (func $function/iiv (param $0 i32) (param $1 i32) - return - ) - (func $function/iii (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function/jjj (param $0 i64) (param $1 i32) (result i64) - local.get $0 - local.get $1 - i64.extend_i32_s - i64.add - ) - (func $function/fff (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.add - ) - (func $function/ddd (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $start:function - call $function/_ - call $function/v - call $function/i - drop - call $function/j - drop - call $function/f - drop - call $function/d - drop - i32.const 0 - call $function/i_ - i32.const 0 - call $function/iv - i32.const 0 - call $function/ii - drop - i64.const 0 - call $function/jj - drop - f32.const 0 - call $function/ff - drop - f64.const 0 - call $function/dd - drop - i32.const 1 - i32.const 2 - call $function/ii_ - i32.const 1 - i32.const 2 - call $function/iiv - i32.const 1 - i32.const 2 - call $function/iii - drop - i64.const 1 - i32.const 2 - call $function/jjj - drop - f32.const 1 - f32.const 2 - call $function/fff - drop - f64.const 1 - f64.const 2 - call $function/ddd - drop - ) - (func $~start - call $start:function - ) -) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.debug.wat similarity index 91% rename from tests/compiler/getter-call.untouched.wat rename to tests/compiler/getter-call.debug.wat index 11bf3c25b4..bf2fee3a33 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 492)) @@ -2065,237 +2064,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2345,7 +2113,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $getter-call/C#get:x~anonymous|0 (result i32) diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.release.wat similarity index 99% rename from tests/compiler/getter-call.optimized.wat rename to tests/compiler/getter-call.release.wat index 8e8d5fb2f4..85a3cae4bb 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.release.wat @@ -1315,11 +1315,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.debug.wat similarity index 100% rename from tests/compiler/getter-setter.untouched.wat rename to tests/compiler/getter-setter.debug.wat diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.release.wat similarity index 100% rename from tests/compiler/getter-setter.optimized.wat rename to tests/compiler/getter-setter.release.wat diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/heap.debug.wat similarity index 62% rename from tests/compiler/retain-return.untouched.wat rename to tests/compiler/heap.debug.wat index f0d05117a3..0e153f920c 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/heap.debug.wat @@ -1,40 +1,46 @@ (module - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 140) "<\00\00\00\01\00\00\00\00\00\00\00\01\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 (i32.const 204) "\1c\00\00\00\01\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 (i32.const 236) "\1c\00\00\00\01\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 (i32.const 268) "\1c\00\00\00\01\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 (i32.const 300) "\1c\00\00\00\01\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 (i32.const 332) "\1c\00\00\00\01\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 (i32.const 364) "\1c\00\00\00\01\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") - (table $0 7 funcref) - (elem (i32.const 1) $start:retain-return~anonymous|0 $start:retain-return~anonymous|1 $start:retain-return~anonymous|2 $start:retain-return~anonymous|3 $start:retain-return~anonymous|4 $start:retain-return~anonymous|5) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $retain-return/ref (mut i32) (i32.const 0)) - (global $retain-return/returnNewFnExpr (mut i32) (i32.const 224)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $retain-return/returnLocalFnExpr (mut i32) (i32.const 256)) - (global $retain-return/returnGlobalFnExpr (mut i32) (i32.const 288)) - (global $retain-return/returnNewFnBlock (mut i32) (i32.const 320)) - (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 352)) - (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 384)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 396)) - (export "_start" (func $~start)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 16524)) + (global $~lib/memory/__heap_base i32 (i32.const 16524)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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") + (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -57,8 +63,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 32 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable @@ -74,18 +80,11 @@ local.get $3 i32.const 12 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 32 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable @@ -101,12 +100,21 @@ i32.shr_u local.set $5 else - i32.const 31 local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 i32.clz i32.sub local.set $4 - local.get $3 + local.get $6 local.get $4 i32.const 4 i32.sub @@ -138,42 +146,42 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 32 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 i32.load offset=4 - local.set $6 + local.set $8 local.get $1 i32.load offset=8 - local.set $7 - local.get $6 + local.set $9 + local.get $8 if - local.get $6 - local.get $7 - i32.store offset=8 + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next end - local.get $7 + local.get $9 if - local.get $7 - local.get $6 - i32.store offset=4 + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 local.set $10 local.get $4 - local.set $9 + local.set $6 local.get $5 - local.set $8 + local.set $7 local.get $10 - local.get $9 + local.get $6 i32.const 4 i32.shl - local.get $8 + local.get $7 i32.add i32.const 2 i32.shl @@ -186,55 +194,55 @@ local.get $4 local.set $10 local.get $5 - local.set $9 - local.get $7 - local.set $8 + local.set $6 + local.get $9 + local.set $7 local.get $11 local.get $10 i32.const 4 i32.shl - local.get $9 + local.get $6 i32.add i32.const 2 i32.shl i32.add - local.get $8 - i32.store offset=96 local.get $7 + i32.store offset=96 + local.get $9 i32.eqz if local.get $0 - local.set $9 + local.set $6 local.get $4 - local.set $8 - local.get $9 - local.get $8 + local.set $7 + local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i32.load offset=4 - local.set $9 + local.set $6 local.get $0 - local.set $8 + local.set $7 local.get $4 local.set $11 - local.get $9 + local.get $6 i32.const 1 local.get $5 i32.shl i32.const -1 i32.xor i32.and - local.tee $9 + local.tee $6 local.set $10 - local.get $8 + local.get $7 local.get $11 i32.const 2 i32.shl i32.add local.get $10 i32.store offset=4 - local.get $9 + local.get $6 i32.eqz if local.get $0 @@ -246,7 +254,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -270,8 +278,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 32 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -287,8 +295,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 32 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -313,86 +321,73 @@ i32.const 1 i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $2 + i32.const 4 + i32.add + local.get $5 i32.const 3 i32.const -1 i32.xor i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 i32.const 4 i32.add - local.get $5 + local.get $3 + i32.load i32.const 3 i32.const -1 i32.xor i32.and i32.add - local.set $3 - local.get $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end + local.set $4 + local.get $4 + i32.load + local.set $5 end local.get $2 i32.const 2 i32.and if local.get $1 - local.set $6 - local.get $6 + local.set $3 + local.get $3 i32.const 4 i32.sub i32.load - local.set $6 - local.get $6 - i32.load local.set $3 + local.get $3 + i32.load + local.set $6 i32.const 1 drop - local.get $3 + local.get $6 i32.const 1 i32.and i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 32 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 i32.const 4 i32.add local.get $2 @@ -401,54 +396,30 @@ i32.xor i32.and i32.add - local.set $7 - local.get $7 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo end local.get $4 local.get $5 i32.const 2 i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $2 i32.const 3 i32.const -1 i32.xor i32.and - local.set $8 + local.set $7 i32.const 1 drop - local.get $8 + local.get $7 i32.const 12 i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 32 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable @@ -458,15 +429,15 @@ local.get $1 i32.const 4 i32.add - local.get $8 + local.get $7 i32.add local.get $4 i32.eq i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 32 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable @@ -476,24 +447,33 @@ i32.sub local.get $1 i32.store - local.get $8 + local.get $7 i32.const 256 i32.lt_u if i32.const 0 - local.set $9 - local.get $8 + local.set $8 + local.get $7 i32.const 4 i32.shr_u - local.set $10 + local.set $9 else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 i32.const 31 - local.get $8 + local.get $3 i32.clz i32.sub - local.set $9 + local.set $8 + local.get $3 local.get $8 - local.get $9 i32.const 4 i32.sub i32.shr_u @@ -501,21 +481,21 @@ i32.const 4 i32.shl i32.xor - local.set $10 - local.get $9 + local.set $9 + local.get $8 i32.const 8 i32.const 1 i32.sub i32.sub - local.set $9 + local.set $8 end i32.const 1 drop - local.get $9 + local.get $8 i32.const 23 i32.lt_u if (result i32) - local.get $10 + local.get $9 i32.const 16 i32.lt_u else @@ -524,19 +504,19 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 32 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 - local.set $7 - local.get $9 + local.set $10 + local.get $8 local.set $3 - local.get $10 + local.get $9 local.set $6 - local.get $7 + local.get $10 local.get $3 i32.const 4 i32.shl @@ -549,26 +529,26 @@ local.set $11 local.get $1 i32.const 0 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev local.get $1 local.get $11 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next local.get $11 if local.get $11 local.get $1 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $0 local.set $12 + local.get $8 + local.set $10 local.get $9 - local.set $7 - local.get $10 local.set $3 local.get $1 local.set $6 local.get $12 - local.get $7 + local.get $10 i32.const 4 i32.shl local.get $3 @@ -582,17 +562,17 @@ local.get $0 i32.load i32.const 1 - local.get $9 + local.get $8 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 - local.get $9 + local.get $8 local.set $12 local.get $0 local.set $3 - local.get $9 + local.get $8 local.set $6 local.get $3 local.get $6 @@ -601,16 +581,16 @@ i32.add i32.load offset=4 i32.const 1 - local.get $10 + local.get $9 i32.shl i32.or - local.set $7 + local.set $10 local.get $13 local.get $12 i32.const 2 i32.shl i32.add - local.get $7 + local.get $10 i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -629,8 +609,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 32 + i32.const 377 i32.const 14 call $~lib/builtins/abort unreachable @@ -672,8 +652,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 32 + i32.const 384 i32.const 16 call $~lib/builtins/abort unreachable @@ -705,8 +685,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 32 + i32.const 397 i32.const 5 call $~lib/builtins/abort unreachable @@ -743,13 +723,13 @@ i32.const 2 i32.and i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $8 i32.const 0 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev local.get $8 i32.const 0 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next local.get $1 i32.const 4 i32.add @@ -760,7 +740,7 @@ i32.const 0 i32.const 2 i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.set $9 local.get $4 @@ -787,6 +767,8 @@ (local $10 i32) (local $11 i32) (local $12 i32) + i32.const 0 + drop global.get $~lib/memory/__heap_base i32.const 15 i32.add @@ -829,7 +811,7 @@ local.set $3 local.get $3 i32.const 0 - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $3 local.set $5 i32.const 0 @@ -940,12 +922,12 @@ (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 i32.const 1073741820 - i32.ge_u + i32.gt_u if + i32.const 96 i32.const 32 - i32.const 160 - i32.const 461 - i32.const 30 + i32.const 458 + i32.const 29 call $~lib/builtins/abort unreachable end @@ -1027,8 +1009,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 32 + i32.const 330 i32.const 14 call $~lib/builtins/abort unreachable @@ -1092,8 +1074,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 32 + i32.const 343 i32.const 18 call $~lib/builtins/abort unreachable @@ -1243,8 +1225,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 32 + i32.const 357 i32.const 14 call $~lib/builtins/abort unreachable @@ -1269,7 +1251,7 @@ i32.const 2 i32.and i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 i32.const 4 i32.add @@ -1282,7 +1264,7 @@ i32.sub i32.const 1 i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $5 call $~lib/rt/tlsf/insertBlock @@ -1293,7 +1275,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $5 local.get $5 @@ -1323,7 +1305,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo end ) (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) @@ -1352,8 +1334,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 32 + i32.const 496 i32.const 16 call $~lib/builtins/abort unreachable @@ -1372,8 +1354,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 32 + i32.const 498 i32.const 14 call $~lib/builtins/abort unreachable @@ -1401,511 +1383,245 @@ i32.const 4 i32.add ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $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/rt/pure/increment (param $0 i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 + i32.const 4 + i32.sub local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else i32.const 0 - i32.const 96 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 end - local.get $0 - ) - (func $retain-return/Ref#constructor (param $0 i32) (result i32) - local.get $0 i32.eqz if i32.const 0 + i32.const 32 + i32.const 559 i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $retain-return/returnNew (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $retain-return/returnLocal (result i32) - (local $0 i32) - i32.const 0 - call $retain-return/Ref#constructor - local.set $0 - local.get $0 - ) - (func $retain-return/returnGlobal (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|0 (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $start:retain-return~anonymous|1 (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - ) - (func $start:retain-return~anonymous|2 (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|3 (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $start:retain-return~anonymous|4 (result i32) - (local $0 i32) - i32.const 0 - call $retain-return/Ref#constructor - local.set $0 - local.get $0 - ) - (func $start:retain-return~anonymous|5 (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return - (local $0 i32) - (local $1 i32) - call $retain-return/returnNew - call $~lib/rt/pure/__release - call $retain-return/returnNew - call $~lib/rt/pure/__release - call $retain-return/returnLocal - call $~lib/rt/pure/__release - call $retain-return/returnLocal - call $~lib/rt/pure/__release - i32.const 0 - call $retain-return/Ref#constructor - global.set $retain-return/ref - call $retain-return/returnGlobal - call $~lib/rt/pure/__release - call $retain-return/returnGlobal - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnExpr - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnExpr - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - local.tee $0 - global.get $retain-return/ref - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - local.get $0 - global.set $retain-return/ref + local.get $1 ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $1 local.get $1 i32.load i32.const 1 i32.or - i32.store - i32.const 0 - drop + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $0 - i32.load offset=4 - local.set $1 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 i32.load - i32.const 1 + i32.const 3 + i32.const -1 + i32.xor i32.and - i32.eqz - i32.eqz + memory.copy + local.get $1 + global.get $~lib/memory/__heap_base + i32.ge_u if i32.const 0 - i32.const 96 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/freeBlock end + local.get $3 + ) + (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 - i32.const 1 - i32.eq + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $5 + local.get $3 + local.get $5 + i32.le_u if local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 drop local.get $1 - i32.const -2147483648 + return + end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.load + local.set $8 + local.get $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const 3 + i32.const -1 + i32.xor i32.and - i32.eqz - i32.eqz + i32.add + local.set $6 + local.get $6 + local.get $3 + i32.ge_u if + local.get $0 + local.get $7 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $6 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable + drop + local.get $1 + return end + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/moveBlock + ) + (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/pure/finalize + call $~lib/rt/tlsf/checkUsedBlock + local.get $1 + call $~lib/rt/tlsf/moveBlock else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop + global.get $~lib/rt/tlsf/ROOT local.get $0 + call $~lib/rt/tlsf/checkUsedBlock local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 + call $~lib/rt/tlsf/reallocateBlock end + i32.const 4 + i32.add ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:retain-return + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/__realloc ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 global.get $~lib/memory/__heap_base i32.lt_u if return end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/arraybuffer/ArrayBuffer~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/string/String~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/tlsf/initialize end - ) - (func $retain-return/Ref~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/function/Function<%28%29=>retain-return/Ref>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28%29=>retain-return/Ref>~visit (param $0 i32) (param $1 i32) + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>retain-return/Ref>#__visit + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock ) - (func $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>#__visit (param $0 i32) (param $1 i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/tlsf/__free ) - (func $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>#__visit + (func $start:heap + i32.const 16 + call $~lib/memory/heap.alloc + global.set $heap/ptr + global.get $heap/ptr + i32.const 32 + call $~lib/memory/heap.realloc + global.set $heap/ptr + global.get $heap/ptr + call $~lib/memory/heap.free ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref> - block $~lib/function/Function<%28%29=>retain-return/Ref> - block $retain-return/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $retain-return/Ref $~lib/function/Function<%28%29=>retain-return/Ref> $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref> $invalid - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer~visit - return - end - local.get $0 - local.get $1 - call $~lib/string/String~visit - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $retain-return/Ref~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>retain-return/Ref>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>~visit - return - end - unreachable + (func $~start + call $start:heap ) ) diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat deleted file mode 100644 index 395b714751..0000000000 --- a/tests/compiler/heap.optimized.wat +++ /dev/null @@ -1,2044 +0,0 @@ -(module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $heap/ptr (mut i32) (i32.const 0)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\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 (i32.const 1164) "<") - (data (i32.const 1176) "\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data (i32.const 1228) ",") - (data (i32.const 1240) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) - (export "memory" (memory $0)) - (start $~start) - (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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - 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 $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - 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 1056 - 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 1056 - 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 1056 - 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 1056 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1056 - 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 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_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 1056 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1056 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17664 - i32.const 0 - i32.store - i32.const 19232 - 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 17664 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17664 - 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 17664 - i32.const 19236 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17664 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1120 - i32.const 1056 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $0 - i32.const 12 - i32.le_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1056 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $3 - i32.const 4 - local.get $0 - i32.load offset=1568 - local.get $3 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $1 - local.get $3 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - local.get $2 - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $1 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/tlsf/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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $6 - local.get $1 - i32.load - i32.const -4 - i32.and - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 4 - i32.add - local.tee $2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $2 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $3 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - local.get $3 - i32.lt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $3 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $2 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $3 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $3 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $3 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $1 - i32.const 17660 - i32.ge_u - if - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - end - local.get $6 - ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $0 - i32.const 17660 - i32.lt_u - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/moveBlock - local.set $0 - else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.set $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $0 - i32.load - local.tee $4 - i32.const -4 - i32.and - local.tee $6 - i32.le_u - if - local.get $2 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock - end - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $7 - i32.const 1 - i32.and - if - local.get $3 - local.get $6 - i32.const 4 - i32.add - local.get $7 - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.le_u - if - local.get $2 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $6 - local.get $4 - i32.const 3 - i32.and - i32.or - i32.store - local.get $2 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock - end - end - local.get $2 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/moveBlock - local.set $0 - end - end - local.get $0 - i32.const 4 - i32.add - ) - (func $~lib/memory/heap.free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 17660 - i32.ge_u - if - 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 - end - ) - (func $~lib/memory/heap.reset - i32.const 1184 - i32.const 1248 - i32.const 109 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~start - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - global.set $heap/ptr - global.get $heap/ptr - i32.const 32 - call $~lib/memory/heap.realloc - global.set $heap/ptr - global.get $heap/ptr - call $~lib/memory/heap.free - ) -) diff --git a/tests/allocators/default/optimized.wat b/tests/compiler/heap.release.wat similarity index 66% rename from tests/allocators/default/optimized.wat rename to tests/compiler/heap.release.wat index 521cabbb5e..29f9ecc7bf 100644 --- a/tests/allocators/default/optimized.wat +++ b/tests/compiler/heap.release.wat @@ -1,28 +1,20 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $heap/ptr (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1048) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1164) "<") - (data (i32.const 1176) "\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data (i32.const 1228) ",") - (data (i32.const 1240) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) + (data (i32.const 1112) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") (export "memory" (memory $0)) + (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -30,101 +22,145 @@ (local $5 i32) local.get $1 i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const -4 i32.and local.tee $2 - i32.const 256 + i32.const 12 i32.lt_u if + i32.const 0 + i32.const 1056 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $3 else - local.get $2 i32.const 31 local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $3 - local.get $2 - i32.const 7 - i32.sub - local.set $4 + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 i32.load offset=8 - local.set $2 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if + local.get $4 local.get $5 - local.get $2 i32.store offset=8 end - local.get $2 + local.get $5 if - local.get $2 local.get $5 + local.get $4 i32.store offset=4 end - local.get $1 - local.get $0 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.shl i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 + local.get $1 i32.eq if - local.get $0 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.shl i32.add i32.const 2 i32.shl + local.get $0 i32.add - local.get $2 + local.get $5 i32.store offset=96 - local.get $2 + local.get $5 i32.eqz if - local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl + local.get $0 i32.add - local.tee $2 + local.tee $1 i32.load offset=4 i32.const -2 - local.get $3 + local.get $2 i32.rotl i32.and - local.set $1 - local.get $2 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 local.get $0 i32.load i32.const -2 - local.get $4 + local.get $3 i32.rotl i32.and i32.store @@ -138,11 +174,30 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.load - local.set $4 + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.const 4 i32.add @@ -151,15 +206,17 @@ i32.const -4 i32.and i32.add - local.tee $5 + local.tee $4 i32.load local.tee $2 i32.const 1 i32.and if + local.get $0 local.get $4 - i32.const -4 - i32.and + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 i32.const 4 i32.add local.get $2 @@ -167,34 +224,20 @@ i32.and i32.add local.tee $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - 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 - i32.load - local.set $2 - end + 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 $4 + local.get $3 i32.const 2 i32.and if @@ -202,106 +245,150 @@ i32.const 4 i32.sub i32.load - local.tee $3 + local.tee $1 i32.load - local.tee $7 - i32.const -4 + local.tee $6 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + 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 $4 + local.get $3 i32.const -4 i32.and i32.add - local.tee $8 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - local.set $1 - end + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 i32.const 2 i32.or i32.store - local.get $5 + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1056 + 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 $4 - i32.const -4 - i32.and - local.tee $3 + local.get $2 i32.const 256 i32.lt_u - if - local.get $3 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $3 else - local.get $3 i32.const 31 - local.get $3 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 end - local.get $0 - local.get $3 - local.get $6 + 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 1056 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 i32.const 4 i32.shl i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $0 - local.get $3 - local.get $6 + local.get $2 + local.get $5 i32.const 4 i32.shl i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -309,26 +396,38 @@ local.get $0 i32.load i32.const 1 - local.get $6 + local.get $5 i32.shl i32.or i32.store - local.get $0 - local.get $6 + local.get $5 i32.const 2 i32.shl + local.get $0 i32.add local.tee $0 local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.const 19 i32.add @@ -337,20 +436,30 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if - local.get $2 + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load local.set $3 local.get $1 @@ -358,7 +467,24 @@ i32.sub local.set $1 end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -404,12 +530,12 @@ (local $0 i32) (local $1 i32) memory.size - local.tee $0 - i32.const 1 - i32.lt_s + local.tee $1 + i32.const 0 + i32.le_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -420,74 +546,74 @@ if unreachable end - i32.const 1280 + i32.const 17552 i32.const 0 i32.store - i32.const 2848 + i32.const 19120 i32.const 0 i32.store loop $for-loop|0 - local.get $1 + local.get $0 i32.const 23 i32.lt_u if - local.get $1 + local.get $0 i32.const 2 i32.shl - i32.const 1280 + i32.const 17552 i32.add i32.const 0 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 16 i32.lt_u if - local.get $0 local.get $1 + local.get $0 i32.const 4 i32.shl i32.add i32.const 2 i32.shl - i32.const 1280 + i32.const 17552 i32.add i32.const 0 i32.store offset=96 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - i32.const 1280 - i32.const 2852 + i32.const 17552 + i32.const 19124 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1280 + i32.const 17552 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 i32.const 1073741820 - i32.ge_u + i32.gt_u if - i32.const 1056 i32.const 1120 - i32.const 461 - i32.const 30 + i32.const 1056 + i32.const 458 + i32.const 29 call $~lib/builtins/abort unreachable end @@ -506,23 +632,23 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else i32.const 31 - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -534,24 +660,38 @@ local.tee $1 i32.clz i32.sub + local.tee $3 + i32.const 7 + i32.sub local.set $2 local.get $1 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $0 + local.tee $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -560,7 +700,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -569,6 +708,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -582,22 +722,33 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 - i32.const 4 - i32.shl - local.get $0 - local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -610,7 +761,21 @@ (local $4 i32) local.get $1 i32.load - local.tee $3 + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1056 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const -4 i32.and local.get $2 @@ -620,10 +785,10 @@ i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $2 @@ -650,18 +815,13 @@ local.get $1 i32.const 4 i32.add - local.tee $0 local.get $1 i32.load i32.const -4 i32.and i32.add + local.tee $0 local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add i32.load i32.const -3 i32.and @@ -679,18 +839,18 @@ local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $3 + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $3 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 - i32.load offset=1568 i32.ne i32.shl - local.get $2 i32.const 1 i32.const 27 local.get $2 @@ -699,6 +859,7 @@ i32.shl i32.const 1 i32.sub + local.get $2 i32.add local.get $2 local.get $2 @@ -712,18 +873,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -732,7 +891,7 @@ end end local.get $0 - local.get $1 + local.get $3 i32.const 16 i32.shl memory.size @@ -742,11 +901,31 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/searchBlock - local.set $1 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load - drop + i32.const -4 + i32.and + local.get $2 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock @@ -756,18 +935,6 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -777,204 +944,31 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select - if + if (result i32) + i32.const 1 + else local.get $1 i32.load - drop + i32.const 1 + i32.and end - local.get $1 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + if + i32.const 0 + i32.const 1056 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $2 + i32.const 32 call $~lib/rt/tlsf/allocateBlock local.tee $2 i32.const 4 @@ -986,116 +980,137 @@ i32.load i32.const -4 i32.and - call $~lib/memory/memory.copy + memory.copy local.get $1 - i32.const 1276 + i32.const 17548 i32.ge_u if + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store local.get $0 local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/insertBlock end local.get $2 ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) + (func $~start + (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/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + global.set $heap/ptr + global.get $heap/ptr + local.set $0 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end local.get $0 - i32.const 1276 + i32.const 17548 i32.lt_u if global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.get $1 call $~lib/rt/tlsf/moveBlock local.set $0 else block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 - block $folding-inner0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - local.get $0 - i32.load - local.tee $5 - i32.const -4 - i32.and - local.tee $3 - i32.le_u - br_if $folding-inner0 + i32.const 32 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + if + local.get $3 local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + if + local.get $5 + local.get $4 i32.const 4 i32.add - local.get $0 - i32.load + local.get $6 i32.const -4 i32.and i32.add - local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.tee $4 + i32.le_u if - local.get $4 local.get $3 - i32.const 4 - i32.add - local.get $7 - i32.const -4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $4 + local.get $1 + i32.const 3 i32.and - i32.add - local.tee $3 - i32.le_u - if - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - br $folding-inner0 - end + i32.or + i32.store + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/moveBlock - local.set $0 - br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 + local.get $3 local.get $0 - local.get $4 - call $~lib/rt/tlsf/prepareBlock + call $~lib/rt/tlsf/moveBlock + local.set $0 end end local.get $0 i32.const 4 i32.add - ) - (func $~lib/memory/heap.free (param $0 i32) - local.get $0 - i32.const 1276 + global.set $heap/ptr + global.get $heap/ptr + local.tee $0 + i32.const 17548 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1106,15 +1121,14 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock end ) - (func $~lib/memory/heap.reset - i32.const 1184 - i32.const 1248 - i32.const 101 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/heap.ts b/tests/compiler/heap.ts index 8a9dc39a1e..b8a56285b9 100644 --- a/tests/compiler/heap.ts +++ b/tests/compiler/heap.ts @@ -1,5 +1,3 @@ -export { heap }; - var ptr = heap.alloc(16); ptr = heap.realloc(ptr, 32); heap.free(ptr); diff --git a/tests/compiler/heap.untouched.wat b/tests/compiler/heap.untouched.wat deleted file mode 100644 index 2673f79c6d..0000000000 --- a/tests/compiler/heap.untouched.wat +++ /dev/null @@ -1,2897 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $heap/ptr (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 252)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16636)) - (global $~lib/memory/__heap_base i32 (i32.const 16636)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "heap.alloc" (func $~lib/memory/heap.alloc)) - (export "heap.realloc" (func $~lib/memory/heap.realloc)) - (export "heap.free" (func $~lib/memory/heap.free)) - (export "heap.reset" (func $~lib/memory/heap.reset)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 96 - i32.const 32 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/memory/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/tlsf/__alloc - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/memory/__heap_base - i32.ge_u - if - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $5 - local.get $3 - local.get $5 - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.load - local.set $8 - local.get $8 - i32.const 1 - i32.and - if - local.get $5 - i32.const 4 - i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $6 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/rt/tlsf/moveBlock - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if (result i32) - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/moveBlock - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - end - i32.const 4 - i32.add - ) - (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__realloc - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/memory/heap.free (param $0 i32) - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $start:heap - i32.const 16 - call $~lib/memory/heap.alloc - global.set $heap/ptr - global.get $heap/ptr - i32.const 32 - call $~lib/memory/heap.realloc - global.set $heap/ptr - global.get $heap/ptr - call $~lib/memory/heap.free - ) - (func $~lib/memory/heap.reset - i32.const 0 - drop - i32.const 160 - i32.const 224 - i32.const 109 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:heap - ) -) diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.debug.wat similarity index 100% rename from tests/compiler/if.untouched.wat rename to tests/compiler/if.debug.wat diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.release.wat similarity index 100% rename from tests/compiler/if.optimized.wat rename to tests/compiler/if.release.wat diff --git a/tests/compiler/implicit-getter-setter.js b/tests/compiler/implicit-getter-setter.js deleted file mode 100644 index ad1b0d4f42..0000000000 --- a/tests/compiler/implicit-getter-setter.js +++ /dev/null @@ -1,34 +0,0 @@ -exports.postInstantiate = function(instance) { - const exports = instance.exports; - - // using an integer value - var basic = exports["Basic#constructor"](0, 123); - (() => { - var val = exports["Basic#get:val"](basic); - if (val != 123) throw Error("invalid value"); - exports["Basic#set:val"](basic, 42); - val = exports["Basic#get:val"](basic); - if (val != 42) throw Error("invalid value"); - })(); - - // using a managed value - var managed = exports["Managed#constructor"](0, basic); - (() => { - var foo = exports["Managed#get:foo"](managed); - if (foo != basic) throw Error("invalid value"); - })(); - (() => { - var foo = exports["Basic#constructor"](0, 321); - exports["Managed#set:foo"](managed, foo); - var expectedFoo = foo; - foo = exports["Managed#get:foo"](managed); - if (foo != expectedFoo) throw Error("invalid value"); - })(); - - // combining both - (() => { - var foo = exports["Managed#get:foo"](managed); - var val = exports["Basic#get:val"](foo); - if (val != 321) throw Error("invalid value"); - })(); -}; diff --git a/tests/compiler/implicit-getter-setter.json b/tests/compiler/implicit-getter-setter.json deleted file mode 100644 index 2c63c08510..0000000000 --- a/tests/compiler/implicit-getter-setter.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/tests/compiler/implicit-getter-setter.ts b/tests/compiler/implicit-getter-setter.ts deleted file mode 100644 index 6d3ef713e4..0000000000 --- a/tests/compiler/implicit-getter-setter.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class Basic { - constructor(public val: i32) {} -} - -export class Managed { - constructor(public foo: Basic) {} -} diff --git a/tests/compiler/import.untouched.wat b/tests/compiler/import.debug.wat similarity index 100% rename from tests/compiler/import.untouched.wat rename to tests/compiler/import.debug.wat diff --git a/tests/compiler/import.optimized.wat b/tests/compiler/import.release.wat similarity index 100% rename from tests/compiler/import.optimized.wat rename to tests/compiler/import.release.wat diff --git a/tests/compiler/indexof-valueof.untouched.wat b/tests/compiler/indexof-valueof.debug.wat similarity index 100% rename from tests/compiler/indexof-valueof.untouched.wat rename to tests/compiler/indexof-valueof.debug.wat diff --git a/tests/compiler/indexof-valueof.optimized.wat b/tests/compiler/indexof-valueof.release.wat similarity index 100% rename from tests/compiler/indexof-valueof.optimized.wat rename to tests/compiler/indexof-valueof.release.wat diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.debug.wat similarity index 72% rename from tests/compiler/infer-array.untouched.wat rename to tests/compiler/infer-array.debug.wat index 25fb03dc89..600c821016 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.debug.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -25,8 +25,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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 1188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17572)) @@ -42,9 +41,9 @@ (data (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 492) ",\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\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") - (data (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff\00\00\00\00") - (data (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 540) ",\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\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") + (data (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff\00\00\00\00") (data (i32.const 620) ",\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\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") (data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") (data (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") @@ -2081,237 +2080,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2361,1319 +2129,66 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill + local.get $3 + ) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $0 + memory.copy + end local.get $3 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + local.get $1 + i32.eqz + if + return end + i32.const 1 + drop local.get $0 - i32.const 3 - i32.and - i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white i32.eq if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if local.get $2 if local.get $4 @@ -3904,33 +2419,93 @@ call $~lib/rt/__newArray local.tee $1 i32.store - i32.const 1 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 3 i32.const 4 - i32.const 512 + i32.const 560 call $~lib/rt/__newArray local.tee $0 i32.store offset=4 - i32.const 1 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 5 - i32.const 560 + i32.const 608 call $~lib/rt/__newArray local.tee $1 i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 12 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 0 i32.eqz - drop + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.const 1 call $~lib/array/Array#__get @@ -3939,7 +2514,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 512 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -3953,8 +2528,20 @@ call $~lib/rt/__newArray local.tee $0 i32.store offset=4 - i32.const 1 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 @@ -3963,8 +2550,20 @@ call $~lib/rt/__newArray local.tee $1 i32.store - i32.const 1 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.const 1 call $~lib/array/Array#__get @@ -4004,8 +2603,20 @@ local.get $3 local.tee $4 i32.store offset=12 - i32.const 1 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor @@ -4041,8 +2652,20 @@ local.get $1 local.tee $3 i32.store offset=8 + local.get $3 i32.const 1 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor @@ -4073,8 +2696,20 @@ local.get $0 local.tee $4 i32.store offset=12 - i32.const 1 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 @@ -4083,8 +2718,20 @@ call $~lib/rt/__newArray local.tee $3 i32.store offset=8 - i32.const 1 + local.get $3 + i32.const 0 + call $~lib/array/Array<~lib/string/String|null>#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 @@ -4093,11 +2740,35 @@ call $~lib/rt/__newArray local.tee $4 i32.store offset=12 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 0 i32.eqz - drop + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 @@ -4106,11 +2777,35 @@ call $~lib/rt/__newArray local.tee $0 i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 0 i32.eqz - drop + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 @@ -4119,11 +2814,35 @@ call $~lib/rt/__newArray local.tee $4 i32.store offset=12 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 0 i32.eqz - drop + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 @@ -4132,11 +2851,35 @@ call $~lib/rt/__newArray local.tee $3 i32.store offset=8 + local.get $3 + i32.const 0 + call $~lib/array/Array#__get + drop i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + call $~lib/array/Array#__get drop i32.const 0 i32.eqz - drop + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2 @@ -4170,8 +2913,20 @@ local.get $3 local.tee $4 i32.store offset=12 - i32.const 1 + local.get $4 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 i32.eqz drop diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.release.wat similarity index 67% rename from tests/compiler/infer-array.optimized.wat rename to tests/compiler/infer-array.release.wat index ec3a36d439..b9e609e6d0 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.release.wat @@ -1,10 +1,10 @@ (module - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -35,12 +35,12 @@ (data (i32.const 1468) ",") (data (i32.const 1480) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 1516) ",") - (data (i32.const 1532) "\18") - (data (i32.const 1542) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1564) "\1c") - (data (i32.const 1580) "\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 1596) ",") - (data (i32.const 1608) "\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1528) "\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1564) ",") + (data (i32.const 1580) "\18") + (data (i32.const 1590) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 1612) "\1c") + (data (i32.const 1628) "\08\00\00\00\01\00\00\00\ff\ff\ff\ff") (data (i32.const 1644) ",") (data (i32.const 1660) "\18") (data (i32.const 1670) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") @@ -1296,7 +1296,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1311,7 +1311,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1324,7 +1324,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1332,7 +1332,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1343,16 +1343,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1363,16 +1363,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1380,7 +1380,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1388,8 +1388,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1406,7 +1406,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1416,13 +1416,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1435,40 +1435,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1528,1013 +1528,241 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__get (param $0 i32) + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load + drop + ) + (func $~lib/array/Array#__get (param $0 i32) + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + f64.load + drop + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + drop + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 + if local.get $0 - local.get $1 - i32.add - local.tee $3 + local.get $2 i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + ) + (func $start:infer-array + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 18596 i32.sub - i32.const 0 - i32.store8 + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace local.get $0 + i32.const 3 i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 i32.const 3 - i32.sub - i32.const 0 - i32.store8 + i32.const 1056 + call $~lib/rt/__newArray + local.tee $0 + i32.store local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 + call $~lib/array/Array#__get + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 i32.const 4 - i32.sub + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 5 + i32.const 1632 + call $~lib/rt/__newArray + local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.store8 + call $~lib/array/Array#__get + drop local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 i32.const 0 - local.get $1 - i32.sub + call $~lib/array/Array#__get + drop + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 + i32.const 3 + i32.const 4 + i32.const 1664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 6 + i32.const 1712 + call $~lib/rt/__newArray local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 i32.store local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $2 - if - local.get $0 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - ) - (func $start:infer-array - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2212 - i32.lt_s - if - i32.const 18624 - i32.const 18672 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18596 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1536 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1584 - call $~lib/rt/__newArray - local.tee $0 - i32.store - block $folding-inner0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.le_u - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - i32.load offset=4 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1616 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1664 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 6 - i32.const 1712 - call $~lib/rt/__newArray - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.le_u - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - f32.load offset=4 - drop - global.get $~lib/memory/__stack_pointer - call $infer-array/Ref#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - call $infer-array/Ref#constructor - local.tee $1 + call $~lib/array/Array#__get + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2559,6 +1787,9 @@ call $~lib/array/Array#__uset local.get $3 i32.store offset=12 + local.get $3 + i32.const 0 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor local.tee $0 @@ -2590,6 +1821,9 @@ call $~lib/array/Array#__uset local.get $3 i32.store offset=8 + local.get $3 + i32.const 1 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor local.tee $0 @@ -2617,41 +1851,76 @@ call $~lib/array/Array#__uset local.get $2 i32.store offset=12 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 9 i32.const 1776 call $~lib/rt/__newArray + local.tee $0 i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 10 i32.const 1808 call $~lib/rt/__newArray + local.tee $0 i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 10 i32.const 1840 call $~lib/rt/__newArray + local.tee $0 i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 i32.const 1872 call $~lib/rt/__newArray + local.tee $0 i32.store offset=12 + local.get $0 + call $~lib/array/Array#__get + local.get $0 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 i32.const 1904 call $~lib/rt/__newArray + local.tee $0 i32.store offset=8 + local.get $0 + call $~lib/array/Array#__get + local.get $0 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2 @@ -2684,15 +1953,57 @@ local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 2000 + i32.const 1488 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 + i32.const 18624 + i32.const 18672 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) @@ -2700,30 +2011,20 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 + block $folding-inner2 + block $folding-inner1 block $invalid block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end return @@ -2731,6 +2032,34 @@ unreachable end local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 i32.load local.tee $0 if @@ -2740,34 +2069,6 @@ return end local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 i32.load local.tee $0 if @@ -2781,10 +2082,6 @@ (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2801,237 +2098,53 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $4 i32.const 0 i32.store local.get $0 local.get $1 i32.shl - local.tee $7 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.set $6 + local.set $1 local.get $3 if - block $~lib/util/memory/memmove|inlined.0 - local.get $7 - local.set $8 - local.get $6 - local.tee $1 - local.get $3 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $1 - i32.sub - local.get $8 - i32.sub - i32.const 0 - local.get $8 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $3 - local.get $8 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.lt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $3 - i64.load - i64.store - local.get $8 - i32.const 8 - i32.sub - local.set $8 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $8 - if - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $8 - i32.add - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - local.get $1 - i32.add - local.get $3 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $8 - i32.const 8 - i32.sub - local.tee $8 - local.get $1 - i32.add - local.get $3 - local.get $8 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $8 - if - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - local.get $1 - i32.add - local.get $3 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end + local.get $1 + local.get $3 + local.get $5 + memory.copy end - local.get $9 - local.get $6 + local.get $4 + local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $1 - local.get $6 + local.tee $2 + local.get $1 i32.store - local.get $6 + local.get $1 if + local.get $2 local.get $1 - local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $2 local.get $1 - local.get $6 i32.store offset=4 - local.get $1 - local.get $7 + local.get $2 + local.get $5 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $infer-array/Ref#constructor (result i32) (local $0 i32) @@ -3066,6 +2179,53 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $2 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white local.get $0 diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.debug.wat similarity index 92% rename from tests/compiler/infer-generic.untouched.wat rename to tests/compiler/infer-generic.debug.wat index 30134cd190..0ff5e3cf81 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.debug.wat @@ -3,10 +3,10 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -27,8 +27,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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 660)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17044)) @@ -2151,237 +2150,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2431,7 +2199,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $infer-generic/inferDefault (param $0 i32) (result i32) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.release.wat similarity index 95% rename from tests/compiler/infer-generic.optimized.wat rename to tests/compiler/infer-generic.release.wat index 4ac173f572..f29c99f5bf 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1245,80 +1245,45 @@ i32.const 20 i32.add local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 + i32.store align=1 local.get $0 ) (func $infer-generic/test1 (param $0 f32) (result f32) local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $infer-generic/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid - end - return + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 - i32.load offset=4 + i32.load local.tee $0 if local.get $0 diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.debug.wat similarity index 100% rename from tests/compiler/infer-type.untouched.wat rename to tests/compiler/infer-type.debug.wat diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.release.wat similarity index 100% rename from tests/compiler/infer-type.optimized.wat rename to tests/compiler/infer-type.release.wat diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.debug.wat similarity index 100% rename from tests/compiler/inlining-blocklocals.untouched.wat rename to tests/compiler/inlining-blocklocals.debug.wat diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.release.wat similarity index 100% rename from tests/compiler/inlining-blocklocals.optimized.wat rename to tests/compiler/inlining-blocklocals.release.wat diff --git a/tests/compiler/inlining-recursive.untouched.wat b/tests/compiler/inlining-recursive.debug.wat similarity index 100% rename from tests/compiler/inlining-recursive.untouched.wat rename to tests/compiler/inlining-recursive.debug.wat diff --git a/tests/compiler/inlining-recursive.optimized.wat b/tests/compiler/inlining-recursive.release.wat similarity index 100% rename from tests/compiler/inlining-recursive.optimized.wat rename to tests/compiler/inlining-recursive.release.wat diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.debug.wat similarity index 92% rename from tests/compiler/inlining.untouched.wat rename to tests/compiler/inlining.debug.wat index 2992a1704e..0534093350 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.debug.wat @@ -3,9 +3,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -24,8 +24,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 556)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16940)) @@ -2271,237 +2270,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2551,7 +2319,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $inlining/Baz#set:a (param $0 i32) (param $1 i32) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.release.wat similarity index 90% rename from tests/compiler/inlining.optimized.wat rename to tests/compiler/inlining.release.wat index c7349b3c06..ef069cde4b 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.release.wat @@ -1141,7 +1141,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1156,7 +1156,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1169,7 +1169,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1177,7 +1177,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1188,16 +1188,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1208,16 +1208,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1225,7 +1225,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1233,8 +1233,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1251,7 +1251,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1261,13 +1261,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1280,40 +1280,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1373,182 +1373,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.debug.wat similarity index 92% rename from tests/compiler/instanceof-class.untouched.wat rename to tests/compiler/instanceof-class.debug.wat index 4f986b8fa1..363a0eab83 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.debug.wat @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $instanceof-class/a (mut i32) (i32.const 0)) (global $instanceof-class/b (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 480)) @@ -2065,237 +2064,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2345,7 +2113,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $start:instanceof-class diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.release.wat similarity index 99% rename from tests/compiler/instanceof-class.optimized.wat rename to tests/compiler/instanceof-class.release.wat index a2b2a2fc4c..002f2e6542 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.release.wat @@ -1233,6 +1233,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $start:instanceof-class (local $0 i32) diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.debug.wat similarity index 100% rename from tests/compiler/instanceof.untouched.wat rename to tests/compiler/instanceof.debug.wat diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.release.wat similarity index 100% rename from tests/compiler/instanceof.optimized.wat rename to tests/compiler/instanceof.release.wat diff --git a/tests/compiler/instanceof.ts b/tests/compiler/instanceof.ts index 2cff1b0bc4..ff793c2b3d 100644 --- a/tests/compiler/instanceof.ts +++ b/tests/compiler/instanceof.ts @@ -72,4 +72,4 @@ assert( an instanceof A); // TS: !=null is an instance of A assert( an instanceof A | null); // AS: !=null is an instance of A | null // TODO: keep track of nullability during flows, so this becomes precomputable: -// assert(an !== null && an instanceof A); +// assert(an != null && an instanceof A); diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.debug.wat similarity index 91% rename from tests/compiler/issues/1095.untouched.wat rename to tests/compiler/issues/1095.debug.wat index 6e7d533459..099c23fb20 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.debug.wat @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 16980)) @@ -2065,237 +2064,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2345,7 +2113,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.release.wat similarity index 98% rename from tests/compiler/issues/1095.optimized.wat rename to tests/compiler/issues/1095.release.wat index c9e7471807..f3a3b2466c 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.release.wat @@ -1355,33 +1355,8 @@ i32.const 20 i32.add local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub i32.const 0 - i32.store8 + i32.store align=1 local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.debug.wat similarity index 91% rename from tests/compiler/issues/1225.untouched.wat rename to tests/compiler/issues/1225.debug.wat index 6d1f184cd0..e338e61487 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 500)) @@ -2076,237 +2075,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2356,7 +2124,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $issues/1225/X#set:x (param $0 i32) (param $1 i32) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.release.wat similarity index 91% rename from tests/compiler/issues/1225.optimized.wat rename to tests/compiler/issues/1225.release.wat index 1b30edf1b9..ff4e46890d 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.release.wat @@ -1015,7 +1015,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) memory.size i32.const 16 i32.shl @@ -1118,7 +1117,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1126,7 +1125,7 @@ memory.size local.tee $0 i32.const 4 - local.get $1 + local.get $3 i32.load offset=1568 local.get $0 i32.const 16 @@ -1141,16 +1140,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $1 local.get $0 - local.get $3 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1158,7 +1157,7 @@ unreachable end end - local.get $1 + local.get $3 local.get $0 i32.const 16 i32.shl @@ -1166,7 +1165,7 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1193,22 +1192,22 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $1 i32.const 16 i32.ge_u if local.get $0 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1217,19 +1216,19 @@ local.get $0 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1289,189 +1288,34 @@ local.get $0 i32.const 20 i32.add - local.tee $3 local.tee $0 i32.const 0 - i32.store8 - local.get $0 i32.const 12 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 + memory.fill + local.get $2 local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $1 - i32.add - local.tee $0 - i32.const 0 i32.store local.get $0 - i32.const 12 - local.get $1 - i32.sub - i32.const -4 - i32.and - local.tee $4 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - block $~lib/util/memory/memset|inlined.0 - local.get $4 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $5 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - local.get $3 - i32.store - local.get $3 i32.const 4 i32.store offset=8 - local.get $3 + local.get $0 i32.const 0 i32.store - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.load offset=8 i32.store offset=4 - local.get $3 + local.get $0 i32.const 4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 global.set $issues/1225/x global.get $issues/1225/x i32.load @@ -1503,12 +1347,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|00 + loop $while-continue|0 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|00 + br $while-continue|0 end end end diff --git a/tests/compiler/issues/1225.ts b/tests/compiler/issues/1225.ts index 70cc63a79d..5f6288f68d 100644 --- a/tests/compiler/issues/1225.ts +++ b/tests/compiler/issues/1225.ts @@ -15,8 +15,8 @@ export function viaThis(): u32 { return x.viaThis; } -assert(normal() === 4); -assert(viaThis() === 4); +assert(normal() == 4); +assert(viaThis() == 4); x = changetype(0); // unleak diff --git a/tests/compiler/issues/1699.debug.wat b/tests/compiler/issues/1699.debug.wat new file mode 100644 index 0000000000..03e6eedfc3 --- /dev/null +++ b/tests/compiler/issues/1699.debug.wat @@ -0,0 +1,2843 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (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_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 688)) + (global $~lib/memory/__data_end i32 (i32.const 732)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17116)) + (global $~lib/memory/__heap_base i32 (i32.const 17116)) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 508) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") + (data (i32.const 688) "\05\00\00\00 \00\00\00\00\00\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") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + 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 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 192 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + 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 $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + 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 $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + 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 $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + 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 + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + 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 $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + 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 $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + 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 $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + 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 $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 128 + i32.const 192 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $issues/1699/MultiAssignmentTest#set:test (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.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 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $start:issues/1699 + 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/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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + 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 $~start + call $start:issues/1699 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17136 + i32.const 17184 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/1699/test + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 + i32.const 3 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + local.get $0 + local.tee $1 + i32.const 1 + local.tee $2 + i32.const 0 + call $issues/1699/MultiAssignmentTest#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/array/Array#__set + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#__set + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $0 + call $~lib/array/Array#get:length + i32.lt_s + local.set $2 + local.get $2 + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $issues/1699/MultiAssignmentTest#constructor + local.tee $3 + i32.store offset=12 + local.get $1 + i32.const 1 + i32.gt_s + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 656 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.ne + i32.eqz + if + i32.const 0 + i32.const 656 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $1 + 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 $1 + 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 $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $5 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $issues/1699/MultiAssignmentTest#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 2 + call $issues/1699/MultiAssignmentTest#set:test + local.get $0 + 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 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 528 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) +) diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat new file mode 100644 index 0000000000..9854775515 --- /dev/null +++ b/tests/compiler/issues/1699.release.wat @@ -0,0 +1,2094 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut 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 18140)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) ",") + (data (i32.const 1096) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1132) "<") + (data (i32.const 1144) "\01\00\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 (i32.const 1196) "<") + (data (i32.const 1208) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1324) "<") + (data (i32.const 1336) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1388) ",") + (data (i32.const 1400) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1468) "<") + (data (i32.const 1480) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1532) "|") + (data (i32.const 1544) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 1660) ",") + (data (i32.const 1672) "\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s") + (data (i32.const 1712) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1740) " \00\00\00\00\00\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1552 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1152 + call $byn-split-outlined-A$~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 159 + 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) + global.get $~lib/rt/itcms/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18140 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1712 + i32.load + local.get $1 + i32.lt_u + if + i32.const 1344 + i32.const 1408 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (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 $2 + 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 $2 + i32.const -4 + i32.and + local.tee $2 + 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 $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + 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 $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + 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 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 18144 + i32.const 0 + i32.store + i32.const 19712 + 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 18144 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 18144 + i32.add + i32.const 0 + i32.store offset=96 + local.get $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 18144 + i32.const 19716 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18144 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18140 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18140 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + 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 18140 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + 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 $3 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $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 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/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 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + 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 1152 + i32.const 1488 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $2 + i32.const 12 + i32.le_u + select + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + 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 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $5 + i32.add + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + 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 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $5 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 498 + 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 $3 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $6 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $3 + i32.const 2 + i32.and + local.get $5 + i32.or + i32.store + local.get $5 + local.get $2 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $6 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $4 + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $5 + local.get $0 + i32.load + local.tee $4 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $5 + i32.store offset=16 + local.get $4 + local.set $3 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $5 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + local.get $5 + local.get $6 + i32.load offset=16 + local.tee $6 + local.get $5 + local.get $6 + i32.lt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + end + local.get $0 + local.get $5 + i32.store offset=8 + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + ) + (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 + block $issues/1699/MultiAssignmentTest + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner0 + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $__inlined_func$start:issues/1699 + memory.size + i32.const 16 + i32.shl + i32.const 18140 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store + local.get $1 + if + local.get $3 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.const 32 + i32.store offset=8 + local.get $3 + i32.const 3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.store + call $issues/1699/MultiAssignmentTest#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 1 + local.get $1 + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/array/Array#__set + loop $for-loop|0 + local.get $3 + i32.load offset=12 + local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + call $issues/1699/MultiAssignmentTest#constructor + local.tee $1 + i32.store offset=12 + local.get $0 + i32.const 1 + i32.gt_s + if + local.get $3 + local.get $0 + local.get $1 + call $~lib/array/Array#__set + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $3 + i32.const 0 + call $~lib/array/Array#__get + local.get $3 + i32.const 1 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + call $~lib/array/Array#__get + local.get $3 + i32.const 1 + call $~lib/array/Array#__get + i32.eq + if + i32.const 0 + i32.const 1680 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:issues/1699 + end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + if + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__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 1756 + i32.lt_s + if + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1552 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) +) diff --git a/tests/compiler/issues/1699.ts b/tests/compiler/issues/1699.ts index 8b29f619ce..a72b7352af 100644 --- a/tests/compiler/issues/1699.ts +++ b/tests/compiler/issues/1699.ts @@ -12,8 +12,8 @@ function test(): void { testinstances[n] = testinstance; } } - assert(testinstances[0] === testinstances[1]); - assert(testinstances[2] !== testinstances[1]); + assert(testinstances[0] == testinstances[1]); + assert(testinstances[2] != testinstances[1]); } test(); diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat deleted file mode 100644 index 27534979fa..0000000000 --- a/tests/compiler/issues/1699.untouched.wat +++ /dev/null @@ -1,4328 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) - (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) - (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) - (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 688)) - (global $~lib/memory/__data_end i32 (i32.const 732)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17116)) - (global $~lib/memory/__heap_base i32 (i32.const 17116)) - (memory $0 1) - (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 508) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") - (data (i32.const 688) "\05\00\00\00 \00\00\00\00\00\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") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - 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 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 320 - i32.const 384 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 192 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - 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 $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - 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 $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - 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 $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - 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 - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - 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 $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - 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 $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - 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 $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - 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 $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 128 - i32.const 464 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 464 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 128 - i32.const 192 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $issues/1699/MultiAssignmentTest#set:test (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtSize - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $3 - local.get $3 - local.get $0 - local.get $1 - local.tee $4 - local.get $2 - i32.load offset=16 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_u - select - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $4 - local.get $1 - local.get $4 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $5 - local.get $1 - local.tee $6 - i32.const 8 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $2 - i32.shl - local.set $6 - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1073741820 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_u - select - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.gt_u - select - local.set $6 - end - local.get $5 - local.get $6 - call $~lib/rt/itcms/__renew - local.set $8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $8 - local.get $5 - i32.ne - if - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - i32.store offset=4 - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.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 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $start:issues/1699 - 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/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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - 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 $~start - call $start:issues/1699 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 17136 - i32.const 17184 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $issues/1699/test - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 - i32.const 3 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - local.get $0 - local.tee $1 - i32.const 1 - local.tee $2 - i32.const 0 - call $issues/1699/MultiAssignmentTest#constructor - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - call $~lib/array/Array#__set - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/array/Array#__set - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $0 - call $~lib/array/Array#get:length - i32.lt_s - local.set $2 - local.get $2 - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $issues/1699/MultiAssignmentTest#constructor - local.tee $3 - i32.store offset=12 - local.get $1 - i32.const 1 - i32.gt_s - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__set - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 656 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.ne - i32.eqz - if - i32.const 0 - i32.const 656 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length_ - local.get $1 - 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 $1 - 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 $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $0 - local.get $5 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $issues/1699/MultiAssignmentTest#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 2 - call $issues/1699/MultiAssignmentTest#set:test - local.get $0 - 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 (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.store - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 528 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) -) diff --git a/tests/compiler/issues/1714.debug.wat b/tests/compiler/issues/1714.debug.wat new file mode 100644 index 0000000000..f7bda7fa3b --- /dev/null +++ b/tests/compiler/issues/1714.debug.wat @@ -0,0 +1,264 @@ +(module + (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.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/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) + (global $~lib/memory/__heap_base i32 (i32.const 16476)) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") + (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $issues/1714/a_i64_i32 (result i32) + i32.const 8 + i32.const 4 + i32.eq + ) + (func $issues/1714/foo (result i32) + call $issues/1714/a_i64_i32 + i32.const 1 + i32.eq + ) + (func $issues/1714/bar (result i32) + i32.const 0 + drop + i32.const 80 + ) + (func $issues/1714/bar (result i32) + i32.const 1 + drop + call $issues/1714/bar + return + ) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~start + call $start:issues/1714 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16496 + i32.const 16544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:issues/1714 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + call $issues/1714/foo + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $issues/1714/bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 80 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/issues/1714.optimized.wat b/tests/compiler/issues/1714.optimized.wat deleted file mode 100644 index 5b3ac4dd54..0000000000 --- a/tests/compiler/issues/1714.optimized.wat +++ /dev/null @@ -1,8 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s") - (data (i32.const 1084) "\1c") - (data (i32.const 1096) "\01\00\00\00\06\00\00\00i\003\002") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/issues/1714.release.wat b/tests/compiler/issues/1714.release.wat new file mode 100644 index 0000000000..ac31a940af --- /dev/null +++ b/tests/compiler/issues/1714.release.wat @@ -0,0 +1,45 @@ +(module + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17500)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s") + (data (i32.const 1084) "\1c") + (data (i32.const 1096) "\01\00\00\00\06\00\00\00i\003\002") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (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 1116 + i32.lt_s + if + i32.const 17520 + i32.const 17568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1104 + i32.store + local.get $0 + i32.const 1104 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/issues/1714.ts b/tests/compiler/issues/1714.ts index 9dd08915ae..7527bdfc60 100644 --- a/tests/compiler/issues/1714.ts +++ b/tests/compiler/issues/1714.ts @@ -15,4 +15,4 @@ function bar(): string { // T1=f64, T2=i32 return nameof(); // iff T1 == i32 } -assert(bar() === "i32"); +assert(bar() == "i32"); diff --git a/tests/compiler/issues/1714.untouched.wat b/tests/compiler/issues/1714.untouched.wat deleted file mode 100644 index ea38be61bd..0000000000 --- a/tests/compiler/issues/1714.untouched.wat +++ /dev/null @@ -1,66 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) - (global $~lib/memory/__heap_base i32 (i32.const 16476)) - (memory $0 1) - (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") - (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $issues/1714/a_i64_i32 (result i32) - i32.const 8 - i32.const 4 - i32.eq - ) - (func $issues/1714/foo (result i32) - call $issues/1714/a_i64_i32 - i32.const 1 - i32.eq - ) - (func $issues/1714/bar (result i32) - i32.const 0 - drop - i32.const 80 - ) - (func $issues/1714/bar (result i32) - i32.const 1 - drop - call $issues/1714/bar - return - ) - (func $start:issues/1714 - call $issues/1714/foo - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $issues/1714/bar - i32.const 80 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:issues/1714 - ) -) diff --git a/tests/compiler/rt/runtime-incremental.untouched.wat b/tests/compiler/issues/1751.debug.wat similarity index 100% rename from tests/compiler/rt/runtime-incremental.untouched.wat rename to tests/compiler/issues/1751.debug.wat diff --git a/tests/compiler/issues/1751.optimized.wat b/tests/compiler/issues/1751.release.wat similarity index 100% rename from tests/compiler/issues/1751.optimized.wat rename to tests/compiler/issues/1751.release.wat diff --git a/tests/compiler/issues/2166.untouched.wat b/tests/compiler/issues/2166.debug.wat similarity index 92% rename from tests/compiler/issues/2166.untouched.wat rename to tests/compiler/issues/2166.debug.wat index 135d89b2f1..23c7bec9db 100644 --- a/tests/compiler/issues/2166.untouched.wat +++ b/tests/compiler/issues/2166.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -23,8 +23,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 652)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17036)) @@ -2068,237 +2068,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2348,7 +2117,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/issues/2166.optimized.wat b/tests/compiler/issues/2166.release.wat similarity index 99% rename from tests/compiler/issues/2166.optimized.wat rename to tests/compiler/issues/2166.release.wat index 49b551f77e..b300e213d5 100644 --- a/tests/compiler/issues/2166.optimized.wat +++ b/tests/compiler/issues/2166.release.wat @@ -1228,6 +1228,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1532,10 +1537,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 local.get $0 diff --git a/tests/compiler/limits.untouched.wat b/tests/compiler/limits.debug.wat similarity index 100% rename from tests/compiler/limits.untouched.wat rename to tests/compiler/limits.debug.wat diff --git a/tests/compiler/limits.optimized.wat b/tests/compiler/limits.release.wat similarity index 100% rename from tests/compiler/limits.optimized.wat rename to tests/compiler/limits.release.wat diff --git a/tests/compiler/literals.untouched.wat b/tests/compiler/literals.debug.wat similarity index 100% rename from tests/compiler/literals.untouched.wat rename to tests/compiler/literals.debug.wat diff --git a/tests/compiler/literals.optimized.wat b/tests/compiler/literals.release.wat similarity index 100% rename from tests/compiler/literals.optimized.wat rename to tests/compiler/literals.release.wat diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.debug.wat similarity index 92% rename from tests/compiler/logical.untouched.wat rename to tests/compiler/logical.debug.wat index e47276a328..fc05bf37c0 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -27,8 +27,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 500)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) @@ -2088,237 +2087,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2368,7 +2136,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $logical/testContextualBoolAnd (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.release.wat similarity index 99% rename from tests/compiler/logical.optimized.wat rename to tests/compiler/logical.release.wat index 9d588d0b05..72fe274540 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.release.wat @@ -1387,11 +1387,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.debug.wat similarity index 100% rename from tests/compiler/loop-flow.untouched.wat rename to tests/compiler/loop-flow.debug.wat diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.release.wat similarity index 100% rename from tests/compiler/loop-flow.optimized.wat rename to tests/compiler/loop-flow.release.wat diff --git a/tests/compiler/loop-wrap.untouched.wat b/tests/compiler/loop-wrap.debug.wat similarity index 100% rename from tests/compiler/loop-wrap.untouched.wat rename to tests/compiler/loop-wrap.debug.wat diff --git a/tests/compiler/loop-wrap.optimized.wat b/tests/compiler/loop-wrap.release.wat similarity index 100% rename from tests/compiler/loop-wrap.optimized.wat rename to tests/compiler/loop-wrap.release.wat diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.debug.wat similarity index 92% rename from tests/compiler/managed-cast.untouched.wat rename to tests/compiler/managed-cast.debug.wat index bd5c191b51..e74c89beea 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.debug.wat @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 608)) (global $~lib/memory/__data_end i32 (i32.const 652)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17036)) @@ -2065,237 +2064,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2345,7 +2113,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $managed-cast/Animal#tame (param $0 i32) diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.release.wat similarity index 99% rename from tests/compiler/managed-cast.optimized.wat rename to tests/compiler/managed-cast.release.wat index 874b65e297..7960564e04 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1223,6 +1223,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.debug.wat similarity index 100% rename from tests/compiler/many-locals.untouched.wat rename to tests/compiler/many-locals.debug.wat diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.release.wat similarity index 100% rename from tests/compiler/many-locals.optimized.wat rename to tests/compiler/many-locals.release.wat diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.debug.wat similarity index 100% rename from tests/compiler/memcpy.untouched.wat rename to tests/compiler/memcpy.debug.wat diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.release.wat similarity index 100% rename from tests/compiler/memcpy.optimized.wat rename to tests/compiler/memcpy.release.wat diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.debug.wat similarity index 100% rename from tests/compiler/memmove.untouched.wat rename to tests/compiler/memmove.debug.wat diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.release.wat similarity index 100% rename from tests/compiler/memmove.optimized.wat rename to tests/compiler/memmove.release.wat diff --git a/tests/compiler/memory.untouched.wat b/tests/compiler/memory.debug.wat similarity index 100% rename from tests/compiler/memory.untouched.wat rename to tests/compiler/memory.debug.wat diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.release.wat similarity index 100% rename from tests/compiler/memory.optimized.wat rename to tests/compiler/memory.release.wat diff --git a/tests/compiler/memorybase.untouched.wat b/tests/compiler/memorybase.debug.wat similarity index 90% rename from tests/compiler/memorybase.untouched.wat rename to tests/compiler/memorybase.debug.wat index db18d4b952..28f0dbeb0e 100644 --- a/tests/compiler/memorybase.untouched.wat +++ b/tests/compiler/memorybase.debug.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (global $memorybase/staticData i32 (i32.const 1024)) - (global $~lib/ASC_MEMORY_BASE i32 (i32.const 1024)) + (global $~lib/native/ASC_MEMORY_BASE i32 (i32.const 1024)) (global $~lib/memory/__data_end i32 (i32.const 1028)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17412)) (global $~lib/memory/__heap_base i32 (i32.const 17412)) diff --git a/tests/compiler/memorybase.optimized.wat b/tests/compiler/memorybase.release.wat similarity index 100% rename from tests/compiler/memorybase.optimized.wat rename to tests/compiler/memorybase.release.wat diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.debug.wat similarity index 100% rename from tests/compiler/memset.untouched.wat rename to tests/compiler/memset.debug.wat diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.release.wat similarity index 100% rename from tests/compiler/memset.optimized.wat rename to tests/compiler/memset.release.wat diff --git a/tests/compiler/merge.untouched.wat b/tests/compiler/merge.debug.wat similarity index 100% rename from tests/compiler/merge.untouched.wat rename to tests/compiler/merge.debug.wat diff --git a/tests/compiler/merge.optimized.wat b/tests/compiler/merge.release.wat similarity index 100% rename from tests/compiler/merge.optimized.wat rename to tests/compiler/merge.release.wat diff --git a/tests/compiler/mutable-globals.debug.wat b/tests/compiler/mutable-globals.debug.wat new file mode 100644 index 0000000000..eb3914cc4b --- /dev/null +++ b/tests/compiler/mutable-globals.debug.wat @@ -0,0 +1,86 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (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 16460)) + (global $~lib/memory/__heap_base i32 (i32.const 16460)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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") + (table $0 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 $start:mutable-globals + global.get $mutable-globals/external + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 124 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/external + i32.const 10 + i32.add + global.set $mutable-globals/external + global.get $mutable-globals/internal + i32.const 10 + i32.add + global.set $mutable-globals/internal + global.get $mutable-globals/external + i32.const 133 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 134 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:mutable-globals + ) +) diff --git a/tests/compiler/features/mutable-globals.js b/tests/compiler/mutable-globals.js similarity index 75% rename from tests/compiler/features/mutable-globals.js rename to tests/compiler/mutable-globals.js index a9856f6aec..577cc96aed 100644 --- a/tests/compiler/features/mutable-globals.js +++ b/tests/compiler/mutable-globals.js @@ -1,11 +1,11 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports["mutable-globals"] = { external: new WebAssembly.Global({ value: "i32", mutable: true }, 123) }; -}; -exports.postStart = function(instance) { +} +export function postStart(instance) { // adds 10 to both const exports = instance.exports; if (exports.external.valueOf() != 133) throw Error("unexpected value"); if (exports.internal.valueOf() != 134) throw Error("unexpected value"); -}; +} diff --git a/tests/compiler/mutable-globals.json b/tests/compiler/mutable-globals.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/mutable-globals.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/mutable-globals.release.wat similarity index 54% rename from tests/compiler/features/mutable-globals.optimized.wat rename to tests/compiler/mutable-globals.release.wat index 3830fabfa0..e3bf3f53fc 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/mutable-globals.release.wat @@ -1,15 +1,15 @@ (module (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) - (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) + (import "mutable-globals" "external" (global $mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $features/mutable-globals/internal (mut i32) (i32.const 124)) + (global $mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) "L") - (data (i32.const 1048) "\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") - (export "external" (global $features/mutable-globals/external)) - (export "internal" (global $features/mutable-globals/internal)) + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") + (export "external" (global $mutable-globals/external)) + (export "internal" (global $mutable-globals/internal)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start @@ -19,7 +19,7 @@ end i32.const 1 global.set $~started - global.get $features/mutable-globals/external + global.get $mutable-globals/external i32.const 123 i32.ne if @@ -30,7 +30,7 @@ call $~lib/builtins/abort unreachable end - global.get $features/mutable-globals/internal + global.get $mutable-globals/internal i32.const 124 i32.ne if @@ -41,15 +41,15 @@ call $~lib/builtins/abort unreachable end - global.get $features/mutable-globals/external + global.get $mutable-globals/external i32.const 10 i32.add - global.set $features/mutable-globals/external - global.get $features/mutable-globals/internal + global.set $mutable-globals/external + global.get $mutable-globals/internal i32.const 10 i32.add - global.set $features/mutable-globals/internal - global.get $features/mutable-globals/external + global.set $mutable-globals/internal + global.get $mutable-globals/external i32.const 133 i32.ne if @@ -60,7 +60,7 @@ call $~lib/builtins/abort unreachable end - global.get $features/mutable-globals/internal + global.get $mutable-globals/internal i32.const 134 i32.ne if diff --git a/tests/compiler/features/mutable-globals.ts b/tests/compiler/mutable-globals.ts similarity index 100% rename from tests/compiler/features/mutable-globals.ts rename to tests/compiler/mutable-globals.ts diff --git a/tests/compiler/named-export-default.untouched.wat b/tests/compiler/named-export-default.debug.wat similarity index 100% rename from tests/compiler/named-export-default.untouched.wat rename to tests/compiler/named-export-default.debug.wat diff --git a/tests/compiler/named-export-default.optimized.wat b/tests/compiler/named-export-default.release.wat similarity index 100% rename from tests/compiler/named-export-default.optimized.wat rename to tests/compiler/named-export-default.release.wat diff --git a/tests/compiler/named-import-default.untouched.wat b/tests/compiler/named-import-default.debug.wat similarity index 100% rename from tests/compiler/named-import-default.untouched.wat rename to tests/compiler/named-import-default.debug.wat diff --git a/tests/compiler/named-import-default.optimized.wat b/tests/compiler/named-import-default.release.wat similarity index 100% rename from tests/compiler/named-import-default.optimized.wat rename to tests/compiler/named-import-default.release.wat diff --git a/tests/compiler/namespace.untouched.wat b/tests/compiler/namespace.debug.wat similarity index 100% rename from tests/compiler/namespace.untouched.wat rename to tests/compiler/namespace.debug.wat diff --git a/tests/compiler/namespace.optimized.wat b/tests/compiler/namespace.release.wat similarity index 100% rename from tests/compiler/namespace.optimized.wat rename to tests/compiler/namespace.release.wat diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.debug.wat similarity index 92% rename from tests/compiler/new.untouched.wat rename to tests/compiler/new.debug.wat index 6d850e0d3e..32dc39b5a6 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -23,8 +23,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $new/gen (mut i32) (i32.const 0)) (global $new/ref2 (mut i32) (i32.const 0)) (global $new/genext (mut i32) (i32.const 0)) @@ -2068,237 +2067,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2348,7 +2116,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $new/Ref#get:ref (param $0 i32) (result i32) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.release.wat similarity index 99% rename from tests/compiler/new.optimized.wat rename to tests/compiler/new.release.wat index 63c45a9f98..01daec402f 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.release.wat @@ -1259,6 +1259,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/node_modules/README.md b/tests/compiler/node_modules/README.md new file mode 100644 index 0000000000..d0e880ec02 --- /dev/null +++ b/tests/compiler/node_modules/README.md @@ -0,0 +1 @@ +Test files for [tests/compiler/packages.ts](../packages.ts). diff --git a/tests/compiler/node_modules/_/index.ts b/tests/compiler/node_modules/_/index.ts new file mode 100644 index 0000000000..66227e4ffc --- /dev/null +++ b/tests/compiler/node_modules/_/index.ts @@ -0,0 +1,29 @@ +// node_modules/a/index.ts +import { a } from "a"; +assert(a == 1); +import { a as a2 } from "a/"; +assert(a2 == 1); +import { a as a3 } from "a/index"; +assert(a3 == 1); + +// node_modules/a/other.ts +import { a_other } from "a/other"; +assert(a_other == 11); + +// ../b/index.ts +import { b } from "b"; +assert(b == 2); +import { b as b2 } from "b/"; +assert(b2 == 2); +import { b as b3 } from "b/index"; +assert(b3 == 2); + +// ../b/other.ts +import { b_other } from "b/other"; +assert(b_other == 22); + +// ../b/other/index.ts +import { b_other_index } from "b/other/"; +assert(b_other_index == 222); +import { b_other_index as b_other_index2 } from "b/other/index"; +assert(b_other_index2 == 222); diff --git a/tests/compiler/node_modules/_/node_modules/a/index.ts b/tests/compiler/node_modules/_/node_modules/a/index.ts new file mode 100644 index 0000000000..2ee5714306 --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/index.ts @@ -0,0 +1,8 @@ +export const a = 1; + +// node_modules/c/index.ts +import { c } from "c"; +assert(c == 3); + +import { b } from "b"; +assert(b == 2); diff --git a/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts b/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts new file mode 100644 index 0000000000..180fd532fc --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts @@ -0,0 +1,7 @@ +export const c = 3; + +import { a } from "a"; +assert(a == 1); + +import { b } from "b"; +assert(b == 2); diff --git a/tests/compiler/node_modules/_/node_modules/a/other.ts b/tests/compiler/node_modules/_/node_modules/a/other.ts new file mode 100644 index 0000000000..99e5c1bb7d --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/other.ts @@ -0,0 +1 @@ +export const a_other = 11; diff --git a/tests/compiler/node_modules/b/index.ts b/tests/compiler/node_modules/b/index.ts new file mode 100644 index 0000000000..202103085c --- /dev/null +++ b/tests/compiler/node_modules/b/index.ts @@ -0,0 +1 @@ +export const b = 2; diff --git a/tests/compiler/node_modules/b/other.ts b/tests/compiler/node_modules/b/other.ts new file mode 100644 index 0000000000..d00c40875b --- /dev/null +++ b/tests/compiler/node_modules/b/other.ts @@ -0,0 +1 @@ +export const b_other = 22; diff --git a/tests/compiler/node_modules/b/other/index.ts b/tests/compiler/node_modules/b/other/index.ts new file mode 100644 index 0000000000..20b07610a0 --- /dev/null +++ b/tests/compiler/node_modules/b/other/index.ts @@ -0,0 +1 @@ +export const b_other_index = 222; diff --git a/tests/compiler/node_modules/tsconfig.json b/tests/compiler/node_modules/tsconfig.json new file mode 100644 index 0000000000..d11208de23 --- /dev/null +++ b/tests/compiler/node_modules/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "moduleResolution": "node" + }, + "include": [ + "./**/*.ts" + ] +} \ No newline at end of file diff --git a/tests/compiler/features/nontrapping-f2i.untouched.wat b/tests/compiler/nontrapping-f2i.debug.wat similarity index 98% rename from tests/compiler/features/nontrapping-f2i.untouched.wat rename to tests/compiler/nontrapping-f2i.debug.wat index 0b8a046ea5..c8db2f898d 100644 --- a/tests/compiler/features/nontrapping-f2i.untouched.wat +++ b/tests/compiler/nontrapping-f2i.debug.wat @@ -21,7 +21,7 @@ (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $start:features/nontrapping-f2i + (func $start:nontrapping-f2i global.get $~lib/builtins/f32.MAX_VALUE i32.trunc_sat_f32_s global.get $~lib/builtins/i32.MAX_VALUE @@ -158,6 +158,6 @@ end i32.const 1 global.set $~started - call $start:features/nontrapping-f2i + call $start:nontrapping-f2i ) ) diff --git a/tests/compiler/nontrapping-f2i.json b/tests/compiler/nontrapping-f2i.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/nontrapping-f2i.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/features/nontrapping-f2i.optimized.wat b/tests/compiler/nontrapping-f2i.release.wat similarity index 100% rename from tests/compiler/features/nontrapping-f2i.optimized.wat rename to tests/compiler/nontrapping-f2i.release.wat diff --git a/tests/compiler/features/nontrapping-f2i.ts b/tests/compiler/nontrapping-f2i.ts similarity index 100% rename from tests/compiler/features/nontrapping-f2i.ts rename to tests/compiler/nontrapping-f2i.ts diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.debug.wat similarity index 80% rename from tests/compiler/number.untouched.wat rename to tests/compiler/number.debug.wat index 19b979c51a..195a4471a4 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) @@ -32,8 +32,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -2166,237 +2166,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2446,7 +2215,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -3466,1259 +3235,6 @@ end unreachable ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -4828,7 +3344,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -4865,7 +3381,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -4972,7 +3488,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -5186,7 +3702,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -6702,7 +5218,7 @@ local.get $2 i32.const 2432 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.release.wat similarity index 77% rename from tests/compiler/number.optimized.wat rename to tests/compiler/number.release.wat index 35ace370a2..0f6851309d 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.release.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1176,7 +1176,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $3 local.get $0 i32.const 16 i32.add @@ -1191,7 +1191,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 12 local.get $1 i32.const 19 @@ -1204,7 +1204,7 @@ i32.const 12 i32.le_u select - local.tee $2 + local.tee $4 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1212,7 +1212,7 @@ memory.size local.tee $1 i32.const 4 - local.get $4 + local.get $3 i32.load offset=1568 local.get $1 i32.const 16 @@ -1223,16 +1223,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $2 + local.get $4 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $2 + local.get $4 i32.add - local.get $2 - local.get $2 + local.get $4 + local.get $4 i32.const 536870910 i32.lt_u select @@ -1243,16 +1243,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $2 local.get $1 - local.get $3 + local.get $2 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1260,7 +1260,7 @@ unreachable end end - local.get $4 + local.get $3 local.get $1 i32.const 16 i32.shl @@ -1268,8 +1268,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $3 local.get $4 - local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1286,7 +1286,7 @@ i32.load i32.const -4 i32.and - local.get $2 + local.get $4 i32.lt_u if i32.const 0 @@ -1296,13 +1296,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $5 - local.get $2 + local.set $2 + local.get $4 i32.const 4 i32.add i32.const 15 @@ -1315,40 +1315,40 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 i32.const -4 i32.and - local.get $2 + local.get $4 i32.sub - local.tee $3 + local.tee $5 i32.const 16 i32.ge_u if local.get $1 - local.get $5 + local.get $2 i32.const 2 i32.and - local.get $2 + local.get $4 i32.or i32.store - local.get $2 + local.get $4 local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $3 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $5 + local.get $2 i32.const -2 i32.and i32.store @@ -1408,182 +1408,11 @@ local.get $1 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.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) @@ -2348,912 +2177,39 @@ i32.store16 local.get $4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + local.get $1 + i32.eqz + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return end local.get $0 - i32.const 3 + local.get $1 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s i32.and - i32.eqz - if - loop $while-continue|1 + if (result i32) + loop $for-loop|0 + local.get $0 local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s + i32.lt_s if local.get $0 i32.const 1 @@ -3302,7 +2258,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $2 i32.const 46 i32.store16 @@ -3330,7 +2286,7 @@ local.get $0 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy i32.const 3456 i32.const 3014704 i32.store @@ -3366,7 +2322,6 @@ i32.const 3458 i32.const 101 i32.store16 - i32.const 3460 local.get $2 i32.const 1 i32.sub @@ -3380,6 +2335,7 @@ i32.sub local.set $0 end + i32.const 3460 local.get $0 local.get $0 i32.const 100000 @@ -3446,7 +2402,7 @@ local.tee $1 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy i32.const 3458 i32.const 46 i32.store16 @@ -3456,9 +2412,6 @@ local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $3 - i32.const 4 - i32.add local.get $2 i32.const 1 i32.sub @@ -3472,6 +2425,9 @@ i32.sub local.set $1 end + local.get $3 + i32.const 4 + i32.add local.get $1 local.get $1 i32.const 100000 @@ -3767,7 +2723,7 @@ local.get $1 i32.const 3456 local.get $0 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.debug.wat similarity index 74% rename from tests/compiler/object-literal.untouched.wat rename to tests/compiler/object-literal.debug.wat index 5c152a30b5..cfd47bdf11 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.debug.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) @@ -26,8 +26,8 @@ (global $~lib/rt/itcms/pinSpace (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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 688)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) @@ -2155,237 +2155,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2435,7 +2204,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) @@ -2598,1271 +2367,18 @@ local.get $1 i32.store ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $object-literal/Unmanaged#set:baz (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $object-literal/Unmanaged#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $0 + (func $object-literal/Unmanaged#set:baz (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $object-literal/Unmanaged#constructor (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $0 end local.get $0 i32.const 0 @@ -4823,14 +3339,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill i32.const 128 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace @@ -5159,7 +3670,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat deleted file mode 100644 index 6d37812722..0000000000 --- a/tests/compiler/object-literal.optimized.wat +++ /dev/null @@ -1,3841 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (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)) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (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/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 18156)) - (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data (i32.const 1084) "<") - (data (i32.const 1096) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1180) "<") - (data (i32.const 1192) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1244) ",") - (data (i32.const 1256) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1292) "<") - (data (i32.const 1304) "\01\00\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 (i32.const 1420) "<") - (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1484) "<") - (data (i32.const 1496) "\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1548) "\1c") - (data (i32.const 1560) "\01") - (data (i32.const 1580) "\1c") - (data (i32.const 1592) "\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data (i32.const 1612) "\1c") - (data (i32.const 1624) "\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1644) "\1c") - (data (i32.const 1656) "\01\00\00\00\06\00\00\00b\00a\00r") - (data (i32.const 1676) "\1c") - (data (i32.const 1688) "\01\00\00\00\06\00\00\00b\00a\00z") - (data (i32.const 1712) "\07\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1748) " ") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18156 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1712 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1200 - i32.const 1264 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1200 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1312 - call $byn-split-outlined-A$~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 159 - 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/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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 18160 - i32.const 0 - i32.store - i32.const 19728 - 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 18160 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 18160 - 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 18160 - i32.const 19732 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 18160 - 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 18156 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step (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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18156 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 18156 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - 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 $3 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/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 1312 - i32.const 1440 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - 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.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - local.get $3 - local.get $3 - i32.const 536870910 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $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 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $2 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - local.get $3 - i32.or - i32.store - local.get $3 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - 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 1312 - i32.const 1104 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl - loop $while-continue|1 - local.get $0 - local.tee $3 - 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 - 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 - local.get $3 - i32.eqz - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - block $folding-inner0 - block $invalid - block $object-literal/OmittedFoo - block $object-literal/OmittedTypes - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $object-literal/OmittedTypes $folding-inner0 $object-literal/OmittedFoo $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - local.get $0 - i32.load - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=4 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=8 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=24 - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=28 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - i32.const 1156 - i32.const 1152 - i32.store - i32.const 1160 - i32.const 1152 - i32.store - i32.const 1152 - global.set $~lib/rt/itcms/toSpace - memory.size - i32.const 16 - i32.shl - i32.const 18156 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1364 - i32.const 1360 - i32.store - i32.const 1368 - i32.const 1360 - i32.store - i32.const 1360 - global.set $~lib/rt/itcms/pinSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 123 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=4 - local.get $1 - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store - local.get $0 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.load offset=4 - local.tee $1 - i32.store - local.get $0 - i32.const 1056 - i32.store offset=4 - local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 8 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - i32.store offset=4 - local.get $6 - i32.const 123 - i32.store - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 5 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 5 - i32.gt_u - select - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $2 - block $__inlined_func$~lib/string/String#substring - i32.const 0 - local.get $1 - local.get $1 - i32.const 0 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - i32.sub - local.tee $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1568 - local.set $4 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.eq - local.get $2 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $4 - br $__inlined_func$~lib/string/String#substring - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $0 - local.get $2 - i32.const 1056 - i32.add - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $5 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $5 - i32.add - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - i32.add - local.get $1 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $5 - if - local.get $0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $6 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $6 - i32.load - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $6 - i32.load offset=4 - local.tee $1 - i32.store - local.get $0 - i32.const 1600 - i32.store offset=4 - local.get $1 - i32.const 1600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 65 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - f32.const 0 - f32.store offset=24 - local.get $1 - f64.const 0 - f64.store offset=32 - local.get $1 - i32.const 0 - i32.store8 offset=40 - local.get $1 - i32.const 0 - i32.store8 offset=41 - local.get $1 - i32.const 0 - i32.store16 offset=42 - local.get $1 - i32.const 0 - i32.store16 offset=44 - local.get $1 - i32.const 0 - i32.store offset=48 - local.get $1 - i32.const 0 - i32.store offset=52 - local.get $1 - f64.const 0 - f64.store offset=56 - local.get $1 - i32.const 0 - i32.store8 offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - f32.const 0 - f32.store offset=24 - local.get $1 - f64.const 0 - f64.store offset=32 - local.get $1 - i32.const 0 - i32.store8 offset=40 - local.get $1 - i32.const 0 - i32.store8 offset=41 - local.get $1 - i32.const 0 - i32.store16 offset=42 - local.get $1 - i32.const 0 - i32.store16 offset=44 - local.get $1 - i32.const 0 - i32.store offset=48 - local.get $1 - i32.const 0 - i32.store offset=52 - local.get $1 - f64.const 0 - f64.store offset=56 - local.get $1 - i32.const 0 - i32.store8 offset=64 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - if - i32.const 0 - i32.const 1504 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - if - i32.const 0 - i32.const 1504 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.load offset=8 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.load offset=16 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.load offset=24 - f32.const 0 - f32.ne - if - i32.const 0 - i32.const 1504 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.load offset=32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_s offset=40 - if - i32.const 0 - i32.const 1504 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=41 - if - i32.const 0 - i32.const 1504 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load16_s offset=42 - if - i32.const 0 - i32.const 1504 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load16_u offset=44 - if - i32.const 0 - i32.const 1504 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=48 - if - i32.const 0 - i32.const 1504 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=52 - if - i32.const 0 - i32.const 1504 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.load offset=56 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=64 - if - i32.const 0 - i32.const 1504 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - f64.const 0 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 1632 - i32.store offset=4 - local.get $1 - i32.const 1632 - call $byn-split-outlined-A$~lib/rt/itcms/__link - local.get $1 - f64.const 0 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store - local.get $0 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load - if - i32.const 0 - i32.const 1504 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.load offset=4 - local.tee $2 - i32.store - local.get $0 - i32.const 1632 - i32.store offset=4 - local.get $2 - i32.const 1632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.load offset=8 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 40 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1664 - i32.store - local.get $1 - i32.const 1664 - call $byn-split-outlined-A$~lib/rt/itcms/__link - local.get $1 - i32.const 1696 - i32.store offset=4 - local.get $1 - i32.const 1696 - call $byn-split-outlined-A$~lib/rt/itcms/__link - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store offset=28 - local.get $1 - i32.const 0 - i32.store offset=32 - local.get $1 - i32.const -1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store offset=28 - local.get $1 - i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.load - local.tee $2 - i32.store - local.get $0 - i32.const 1664 - i32.store offset=4 - local.get $2 - i32.const 1664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.load offset=4 - local.tee $2 - i32.store - local.get $0 - i32.const 1696 - i32.store offset=4 - local.get $2 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=8 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=12 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=20 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=24 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=28 - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=32 - if - i32.const 0 - i32.const 1504 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=36 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 18156 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|017 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|017 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|118 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|118 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18176 - i32.const 18224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) -) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/object-literal.release.wat similarity index 55% rename from tests/compiler/extends-baseaggregate.optimized.wat rename to tests/compiler/object-literal.release.wat index 8f7b54a20f..aa5ee9ce87 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/object-literal.release.wat @@ -1,99 +1,52 @@ (module (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/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)) (global $~lib/rt/itcms/total (mut 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 18156)) (memory $0 1) - (data (i32.const 1036) "\1c") - (data (i32.const 1068) ",") - (data (i32.const 1080) "\07\00\00\00\10\00\00\00 \04\00\00 \04") - (data (i32.const 1116) "\1c") - (data (i32.const 1148) ",") - (data (i32.const 1160) "\08\00\00\00\10\00\00\00p\04\00\00p\04") - (data (i32.const 1196) "<") - (data (i32.const 1208) "\01\00\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 (i32.const 1260) "<") - (data (i32.const 1272) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1388) "<") - (data (i32.const 1400) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1452) ",") - (data (i32.const 1464) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1532) "<") - (data (i32.const 1544) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1596) ",") - (data (i32.const 1608) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1644) ",") - (data (i32.const 1656) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1696) "\t\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1752) "\04\00\00\00\02A\00\00\00\00\00\00\02A") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") + (data (i32.const 1084) "<") + (data (i32.const 1096) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1180) "<") + (data (i32.const 1192) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1244) ",") + (data (i32.const 1256) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1292) "<") + (data (i32.const 1304) "\01\00\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 (i32.const 1420) "<") + (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1484) "<") + (data (i32.const 1496) "\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 1548) "\1c") + (data (i32.const 1560) "\01") + (data (i32.const 1580) "\1c") + (data (i32.const 1592) "\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") + (data (i32.const 1612) "\1c") + (data (i32.const 1624) "\01\00\00\00\08\00\00\00t\00e\00s\00t") + (data (i32.const 1644) "\1c") + (data (i32.const 1656) "\01\00\00\00\06\00\00\00b\00a\00r") + (data (i32.const 1676) "\1c") + (data (i32.const 1688) "\01\00\00\00\06\00\00\00b\00a\00z") + (data (i32.const 1712) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1748) " ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1168 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1408 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1616 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1216 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 159 - 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) @@ -108,7 +61,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 1104 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -135,7 +88,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 1104 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -149,7 +102,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 1104 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -177,13 +130,13 @@ if (result i32) i32.const 1 else - i32.const 1696 + i32.const 1712 i32.load local.get $1 i32.lt_u if - i32.const 1408 - i32.const 1472 + i32.const 1200 + i32.const 1264 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -192,7 +145,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 1700 + i32.const 1716 i32.add i32.load i32.const 32 @@ -226,6 +179,51 @@ local.get $0 i32.store offset=8 ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1200 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1312 + call $byn-split-outlined-A$~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 159 + 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/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -239,7 +237,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -253,7 +251,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -299,7 +297,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -389,7 +387,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -403,7 +401,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -464,7 +462,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -497,7 +495,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -512,7 +510,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -563,7 +561,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +631,7 @@ i32.gt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -658,7 +656,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -686,7 +684,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -816,6 +814,56 @@ i32.const 18160 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 18156 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -991,7 +1039,7 @@ i32.ne if i32.const 0 - i32.const 1280 + i32.const 1104 i32.const 228 i32.const 20 call $~lib/builtins/abort @@ -1020,51 +1068,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 - i32.const 18156 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1552 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + call $~lib/rt/tlsf/__free end i32.const 10 return @@ -1133,7 +1137,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1185,7 +1189,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1207,113 +1211,45 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1216 - i32.const 1280 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $5 - local.get $0 - i32.const 16 - i32.add - local.tee $2 + local.get $1 i32.const 1073741820 i32.gt_u if - i32.const 1216 - i32.const 1552 + i32.const 1312 + i32.const 1440 i32.const 458 i32.const 29 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 12 - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $2 + local.get $1 i32.const 12 i32.le_u select local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $5 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1342,16 +1278,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $2 + local.get $1 local.get $2 - local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1359,29 +1295,29 @@ unreachable end end - local.get $5 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $0 local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 496 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 + local.get $1 i32.load i32.const -4 i32.and @@ -1389,18 +1325,18 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 498 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $0 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $1 i32.load - local.set $6 + local.set $4 local.get $3 i32.const 4 i32.add @@ -1408,65 +1344,136 @@ i32.and if i32.const 0 - i32.const 1552 + i32.const 1440 i32.const 357 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if - local.get $2 - local.get $6 + local.get $1 + local.get $4 i32.const 2 i32.and local.get $3 i32.or i32.store local.get $3 - local.get $2 + local.get $1 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $0 local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $2 - local.get $6 + local.get $1 + local.get $4 i32.const -2 i32.and i32.store - local.get $2 + local.get $1 i32.const 4 i32.add - local.get $2 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.load i32.const -3 i32.and i32.store end - local.get $2 + 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 1312 + i32.const 1104 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 local.get $2 @@ -1507,1392 +1514,1213 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return end + local.get $1 + i32.const 0 local.get $0 - i32.const 3 + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 i32.and + i32.or i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and if - loop $while-continue|1 + loop $do-loop|0 local.get $2 - i32.const 16 - i32.ge_u + i64.load + local.get $1 + i64.load + i64.eq if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 + local.get $2 + i32.const 8 + i32.add + local.set $2 local.get $1 - i32.const 16 + i32.const 8 i32.add local.set $1 local.get $0 - i32.const 16 - i32.add - local.set $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if local.get $2 - i32.const 16 + 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 + local.get $2 + i32.const 2 + i32.add local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end - local.get $2 - i32.const 8 - i32.and - if + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + block $folding-inner0 + block $invalid + block $object-literal/OmittedFoo + block $object-literal/OmittedTypes + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $object-literal/OmittedTypes $folding-inner0 $object-literal/OmittedFoo $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + return + end local.get $0 - local.get $1 i32.load - i32.store + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - local.get $1 i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if + i32.load offset=8 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 + i32.load offset=12 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if + i32.load offset=16 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 + i32.load offset=20 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if + i32.load offset=24 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 - local.get $1 - i32.load8_u - i32.store8 + i32.load offset=28 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - return + unreachable end - local.get $2 - i32.const 32 - i32.ge_u + local.get $0 + i32.load offset=4 + local.tee $0 if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + 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 18156 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/pinSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 123 + i32.store + local.get $1 + i32.const 1056 + i32.store offset=4 + local.get $1 + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.load - local.set $5 + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 + i32.const 1056 + i32.store offset=4 local.get $1 - local.tee $4 - i32.const 1 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + i32.const 0 + i32.store local.get $2 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 4 i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 5 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 5 + i32.gt_u + select + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $3 + block $__inlined_func$~lib/string/String#substring + i32.const 0 + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $1 + i32.eqz if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - local.get $0 - i32.const 16 + global.set $~lib/memory/__stack_pointer + i32.const 1568 + local.set $0 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $0 + i32.const 1 + i32.shl + local.get $4 + i32.eq + local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 + br $__inlined_func$~lib/string/String#substring end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - i32.const 1180 - i32.load - local.tee $10 - i32.const 1 - i32.add - local.tee $9 - i32.const 1176 - i32.load - local.tee $1 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $9 - i32.const 268435455 - i32.gt_u - if - i32.const 1616 - i32.const 1664 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + i32.const 1056 + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + 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 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store + local.get $0 + i32.const 1600 + i32.store offset=4 + local.get $1 + i32.const 1600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 65 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + f32.const 0 + f32.store offset=24 + local.get $1 + f64.const 0 + f64.store offset=32 + local.get $1 + i32.const 0 + i32.store8 offset=40 + local.get $1 + i32.const 0 + i32.store8 offset=41 + local.get $1 + i32.const 0 + i32.store16 offset=42 + local.get $1 + i32.const 0 + i32.store16 offset=44 + local.get $1 + i32.const 0 + i32.store offset=48 + local.get $1 + i32.const 0 + i32.store offset=52 + local.get $1 + f64.const 0 + f64.store offset=56 + local.get $1 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + f32.const 0 + f32.store offset=24 + local.get $1 + f64.const 0 + f64.store offset=32 + local.get $1 + i32.const 0 + i32.store8 offset=40 + local.get $1 + i32.const 0 + i32.store8 offset=41 + local.get $1 + i32.const 0 + i32.store16 offset=42 + local.get $1 + i32.const 0 + i32.store16 offset=44 + local.get $1 + i32.const 0 + i32.store offset=48 + local.get $1 + i32.const 0 + i32.store offset=52 + local.get $1 + f64.const 0 + f64.store offset=56 + local.get $1 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + if + i32.const 0 + i32.const 1504 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.load offset=8 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.load offset=16 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.load offset=24 + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 1504 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.load offset=32 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_s offset=40 + if + i32.const 0 + i32.const 1504 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=41 + if + i32.const 0 + i32.const 1504 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load16_s offset=42 + if + i32.const 0 + i32.const 1504 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load16_u offset=44 + if + i32.const 0 + i32.const 1504 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=48 + if + i32.const 0 + i32.const 1504 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=52 + if + i32.const 0 + i32.const 1504 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.load offset=56 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=64 + if + i32.const 0 + i32.const 1504 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1073741820 + i32.const 0 + i32.store offset=4 local.get $1 - i32.const 1073741820 - i32.lt_u - select - local.tee $1 - local.get $9 - i32.const 8 - local.get $9 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 1632 + i32.store offset=4 + local.get $1 + i32.const 1632 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $2 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - local.get $2 - i32.gt_u - select - local.tee $8 - i32.const 1168 i32.load - local.tee $3 - i32.const 20 + if + i32.const 0 + i32.const 1504 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $0 + i32.const 1632 + i32.store offset=4 + local.get $2 + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.load offset=8 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.tee $1 - i32.load - i32.const -4 - i32.and - i32.const 16 + i32.const 0 + i32.store + local.get $1 + i32.const 40 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1664 + i32.store + local.get $1 + i32.const 1664 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 + i32.const 1696 + i32.store offset=4 + local.get $1 + i32.const 1696 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.store offset=28 + local.get $1 + i32.const 0 + i32.store offset=32 + local.get $1 + i32.const -1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.store offset=28 + local.get $1 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.le_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.load + local.tee $2 + i32.store + local.get $0 + i32.const 1664 + i32.store offset=4 + local.get $2 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - local.get $8 - i32.store offset=16 - local.get $3 - local.set $6 - br $__inlined_func$~lib/rt/itcms/__renew + i32.const 0 + i32.const 1504 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $8 + global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $6 - local.set $2 - local.get $8 + i32.load offset=4 + local.tee $2 + i32.store + local.get $0 + i32.const 1696 + i32.store offset=4 + local.get $2 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=16 - local.tee $1 + i32.load offset=8 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $8 - i32.gt_u - select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.tee $1 - local.get $2 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.sub - local.get $7 - i32.sub + i32.load offset=12 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $1 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $2 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $1 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $2 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + i32.const 1504 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $3 - local.get $6 - i32.ne - if - i32.const 1168 - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=16 + local.tee $0 i32.store - i32.const 1172 - local.get $6 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=20 + local.tee $0 i32.store - local.get $6 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if - local.get $6 i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link + i32.const 1504 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - i32.const 1176 - local.get $8 - i32.store - end - i32.const 1172 - i32.load - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - local.get $0 - if - local.get $0 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - i32.const 1180 - local.get $9 - i32.store - ) - (func $~lib/array/Array~visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load - local.tee $2 + i32.load offset=24 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 0 + i32.const 1504 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 4 + i32.load offset=28 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=32 + if + i32.const 0 + i32.const 1504 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=36 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return + global.set $~lib/memory/__stack_pointer + i32.const 18156 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $0 - call $~lib/array/Array~visit - return end - local.get $0 - call $~lib/array/Array~visit - return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load offset=16 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - (local $0 i32) - (local $1 i32) - 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 1772 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 18156 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/itcms/pinSpace - i32.const 1364 - i32.const 1360 - i32.store - i32.const 1368 - i32.const 1360 - i32.store - i32.const 1360 - global.set $~lib/rt/itcms/toSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 - i32.store - i32.const 1504 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 1168 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - f64.const 0 - f64.store - local.get $0 - f64.const 0 - f64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18176 i32.const 18224 @@ -2921,41 +2749,49 @@ end ) (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/rt/itcms/white local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if - i32.const 1152 - i32.load + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 i32.and - local.tee $2 + local.tee $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - i32.const 1148 - local.get $0 local.get $1 - select call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 i32.eq - local.get $2 + local.get $0 i32.const 3 i32.eq i32.and if - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#makeGray end end diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.debug.wat similarity index 91% rename from tests/compiler/optional-typeparameters.untouched.wat rename to tests/compiler/optional-typeparameters.debug.wat index be40364603..3224a3b70f 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -23,8 +23,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 416)) @@ -2071,237 +2070,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2351,7 +2119,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $optional-typeparameters/TestConcrete#test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.release.wat similarity index 99% rename from tests/compiler/optional-typeparameters.optimized.wat rename to tests/compiler/optional-typeparameters.release.wat index 1deb071c38..e8034ca5e3 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1231,6 +1231,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.debug.wat similarity index 100% rename from tests/compiler/overflow.untouched.wat rename to tests/compiler/overflow.debug.wat diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.release.wat similarity index 100% rename from tests/compiler/overflow.optimized.wat rename to tests/compiler/overflow.release.wat diff --git a/tests/compiler/packages.debug.wat b/tests/compiler/packages.debug.wat new file mode 100644 index 0000000000..aef7560b4a --- /dev/null +++ b/tests/compiler/packages.debug.wat @@ -0,0 +1,87 @@ +(module + (type $none_=>_none (func)) + (global $~lib/a/index/a i32 (i32.const 1)) + (global $~lib/c/index/c i32 (i32.const 3)) + (global $~lib/b/index/b i32 (i32.const 2)) + (global $~lib/a/other/a_other i32 (i32.const 11)) + (global $~lib/b/other/b_other i32 (i32.const 22)) + (global $~lib/b/other/index/b_other_index i32 (i32.const 222)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) + (memory $0 0) + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:~lib/c/index + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + ) + (func $start:~lib/a/index + call $start:~lib/c/index + global.get $~lib/c/index/c + i32.const 3 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + ) + (func $start:~lib/_/index + call $start:~lib/a/index + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/other/a_other + i32.const 11 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/other/b_other + i32.const 22 + i32.eq + drop + global.get $~lib/b/other/index/b_other_index + i32.const 222 + i32.eq + drop + global.get $~lib/b/other/index/b_other_index + i32.const 222 + i32.eq + drop + ) + (func $start:packages + call $start:~lib/_/index + ) + (func $~start + call $start:packages + ) +) diff --git a/tests/compiler/std/simd.json b/tests/compiler/packages.json similarity index 100% rename from tests/compiler/std/simd.json rename to tests/compiler/packages.json diff --git a/tests/compiler/rt/ids.optimized.wat b/tests/compiler/packages.release.wat similarity index 100% rename from tests/compiler/rt/ids.optimized.wat rename to tests/compiler/packages.release.wat diff --git a/tests/compiler/packages.ts b/tests/compiler/packages.ts new file mode 100644 index 0000000000..23bdbfb28b --- /dev/null +++ b/tests/compiler/packages.ts @@ -0,0 +1,2 @@ +// node_modules/_/index.ts +import "_"; diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.debug.wat similarity index 95% rename from tests/compiler/portable-conversions.untouched.wat rename to tests/compiler/portable-conversions.debug.wat index fda49f783b..5f7090e136 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.debug.wat @@ -40,7 +40,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.extend8_s i32.eqz if @@ -52,7 +52,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.extend8_s i32.eqz if @@ -87,7 +87,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.extend16_s i32.eqz if @@ -99,7 +99,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.extend16_s i32.eqz if @@ -132,7 +132,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.eqz if i32.const 0 @@ -143,7 +143,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.eqz if i32.const 0 @@ -175,7 +175,7 @@ unreachable end global.get $portable-conversions/f - i64.trunc_f32_s + i64.trunc_sat_f32_s i64.eqz if i32.const 0 @@ -186,7 +186,7 @@ unreachable end global.get $portable-conversions/F - i64.trunc_f64_s + i64.trunc_sat_f64_s i64.eqz if i32.const 0 @@ -218,7 +218,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.eqz if i32.const 0 @@ -229,7 +229,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.eqz if i32.const 0 @@ -265,7 +265,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_u + i32.trunc_sat_f32_u i32.const 255 i32.and i32.eqz @@ -278,7 +278,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_u + i32.trunc_sat_f64_u i32.const 255 i32.and i32.eqz @@ -316,7 +316,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_u + i32.trunc_sat_f32_u i32.const 65535 i32.and i32.eqz @@ -329,7 +329,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_u + i32.trunc_sat_f64_u i32.const 65535 i32.and i32.eqz @@ -363,7 +363,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_u + i32.trunc_sat_f32_u i32.eqz if i32.const 0 @@ -374,7 +374,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_u + i32.trunc_sat_f64_u i32.eqz if i32.const 0 @@ -406,7 +406,7 @@ unreachable end global.get $portable-conversions/f - i64.trunc_f32_u + i64.trunc_sat_f32_u i64.eqz if i32.const 0 @@ -417,7 +417,7 @@ unreachable end global.get $portable-conversions/F - i64.trunc_f64_u + i64.trunc_sat_f64_u i64.eqz if i32.const 0 @@ -449,7 +449,7 @@ unreachable end global.get $portable-conversions/f - i32.trunc_f32_u + i32.trunc_sat_f32_u i32.eqz if i32.const 0 @@ -460,7 +460,7 @@ unreachable end global.get $portable-conversions/F - i32.trunc_f64_u + i32.trunc_sat_f64_u i32.eqz if i32.const 0 diff --git a/tests/compiler/portable-conversions.optimized.wat b/tests/compiler/portable-conversions.release.wat similarity index 100% rename from tests/compiler/portable-conversions.optimized.wat rename to tests/compiler/portable-conversions.release.wat diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.debug.wat similarity index 100% rename from tests/compiler/possibly-null.untouched.wat rename to tests/compiler/possibly-null.debug.wat diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.release.wat similarity index 100% rename from tests/compiler/possibly-null.optimized.wat rename to tests/compiler/possibly-null.release.wat diff --git a/tests/compiler/recursive.untouched.wat b/tests/compiler/recursive.debug.wat similarity index 100% rename from tests/compiler/recursive.untouched.wat rename to tests/compiler/recursive.debug.wat diff --git a/tests/compiler/recursive.optimized.wat b/tests/compiler/recursive.release.wat similarity index 100% rename from tests/compiler/recursive.optimized.wat rename to tests/compiler/recursive.release.wat diff --git a/tests/compiler/reexport.debug.wat b/tests/compiler/reexport.debug.wat new file mode 100644 index 0000000000..398e8ffb90 --- /dev/null +++ b/tests/compiler/reexport.debug.wat @@ -0,0 +1,2364 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $exports/animals.Animal.CAT i32 (i32.const 0)) + (global $exports/animals.Animal.DOG i32 (i32.const 1)) + (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/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 500)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) + (global $~lib/memory/__heap_base i32 (i32.const 16884)) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 464) "\04\00\00\00 \00\00\00\00\00\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 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $export/add)) + (export "renamed_sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "rerenamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "rerenamed_c" (global $export/c)) + (export "renamed_add" (func $export/add)) + (export "rerenamed_sub" (func $export/mul)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $exports/Car#set:doors (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + 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 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 144 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + 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 $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + 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 + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 80 + i32.const 144 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + local.get $0 + i32.load + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $export-default/theDefault + nop + ) + (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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16912 + i32.const 16960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:reexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 2 + call $export/add + i32.const 3 + i32.const 4 + call $export/mul + i32.add + drop + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + 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 + global.set $reexport/car + global.get $reexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $exports/Car#set:doors + local.get $0 + local.get $1 + call $exports/Car#set:doors + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat deleted file mode 100644 index 762e26a1d3..0000000000 --- a/tests/compiler/reexport.optimized.wat +++ /dev/null @@ -1,1861 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (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/rt/itcms/total (mut 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 $reexport/car (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17916)) - (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data (i32.const 1084) "<") - (data (i32.const 1096) "\01\00\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 (i32.const 1148) "<") - (data (i32.const 1160) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1276) "<") - (data (i32.const 1288) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1340) ",") - (data (i32.const 1352) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1420) "<") - (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1488) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1516) " \00\00\00\00\00\00\00 ") - (export "add" (func $export/add)) - (export "renamed_sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "rerenamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "rerenamed_c" (global $export/c)) - (export "Car" (global $exports/Car)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "renamed_add" (func $export/add)) - (export "rerenamed_sub" (func $export/mul)) - (export "renamed_ns.two" (func $export/ns.one)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.one)) - (export "exportstar.default.two" (func $export/ns.one)) - (export "ExportsNamespace.add" (func $export/add)) - (export "ExportsNamespace.subOpt" (func $exports/subOpt@varargs)) - (export "ExportsNamespace.math.sub" (func $export/sub)) - (export "ExportsNamespace.Animal.CAT" (global $exports/Animal.CAT)) - (export "ExportsNamespace.Animal.DOG" (global $exports/Animal.DOG)) - (export "ExportsNamespace.animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "ExportsNamespace.animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "ExportsNamespace.Car" (global $exports/Car)) - (export "ExportsNamespace.Car.TIRES" (global $exports/Car.TIRES)) - (export "ExportsNamespace.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.vehicles.Car" (global $exports/vehicles.Car)) - (export "ExportsNamespace.vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "ExportsNamespace.vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.outer.inner.a" (global $exports/outer.inner.a)) - (export "ExportsNamespace.renamed_mul" (func $export/mul)) - (export "default" (func $export/ns.one)) - (export "renamed_default" (func $export/ns.one)) - (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (export "Car#get:doors" (func $export:exports/Car#get:doors)) - (export "Car#set:doors" (func $export:exports/Car#set:doors)) - (export "Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $export:exports/Car#get:doors)) - (export "Car#set:numDoors" (func $export:exports/Car#set:doors)) - (export "Car#openDoors" (func $export:exports/Car#openDoors)) - (export "ExportsNamespace.Car#get:doors" (func $export:exports/Car#get:doors)) - (export "ExportsNamespace.Car#set:doors" (func $export:exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $export:exports/Car#get:doors)) - (export "ExportsNamespace.Car#set:numDoors" (func $export:exports/Car#set:doors)) - (export "ExportsNamespace.Car#openDoors" (func $export:exports/Car#openDoors)) - (export "ExportsNamespace.vehicles.Car#get:doors" (func $export:exports/Car#get:doors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $export:exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $export:exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $export:exports/Car#get:doors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $export:exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $export:exports/Car#openDoors)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - i32.const 1296 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1104 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 159 - 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/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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17920 - i32.const 0 - i32.store - i32.const 19488 - 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 17920 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17920 - 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 17920 - i32.const 19492 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17920 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17916 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17916 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17916 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - 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 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $1 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - 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.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $4 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $4 - 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 $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - i32.const 4 - ) - (func $export/ns.one - nop - ) - (func $exports/subOpt@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 - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/vehicles.Car - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $exports/vehicles.Car $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17916 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:exports/Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#set:doors (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#openDoors (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $1 - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 17916 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $0 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) -) diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat new file mode 100644 index 0000000000..a9566616aa --- /dev/null +++ b/tests/compiler/reexport.release.wat @@ -0,0 +1,1550 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~lib/rt/itcms/total (mut 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 $reexport/car (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1084) "<") + (data (i32.const 1096) "\01\00\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 (i32.const 1148) "<") + (data (i32.const 1160) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1276) "<") + (data (i32.const 1288) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1340) ",") + (data (i32.const 1352) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1420) "<") + (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1488) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1516) " ") + (export "add" (func $export/add)) + (export "renamed_sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "rerenamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "rerenamed_c" (global $export/c)) + (export "renamed_add" (func $export/add)) + (export "rerenamed_sub" (func $export/mul)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + i32.const 1296 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1104 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 159 + 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/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 $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $3 + local.get $2 + local.get $4 + 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 $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $2 + i32.rotl + i32.and + local.set $2 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + local.get $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + 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 $5 + i32.const 2 + i32.shl + local.get $0 + 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 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 377 + 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 $4 + if + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $4 + i32.load + local.set $3 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $2 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + 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 $2 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + 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 17920 + i32.const 0 + i32.store + i32.const 19488 + 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 17920 + 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 $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 17920 + 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 17920 + i32.const 19492 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17920 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + 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 17908 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $0 + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + 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 + nop + ) + (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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + 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 + local.get $0 + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) +) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat deleted file mode 100644 index 09709a9c0c..0000000000 --- a/tests/compiler/reexport.untouched.wat +++ /dev/null @@ -1,3007 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (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/rt/itcms/total (mut 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/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 508)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16892)) - (global $~lib/memory/__heap_base i32 (i32.const 16892)) - (memory $0 1) - (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 464) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\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 funcref) - (elem $0 (i32.const 1)) - (export "add" (func $export/add)) - (export "renamed_sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "rerenamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "rerenamed_c" (global $export/c)) - (export "Car" (global $exports/Car)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "renamed_add" (func $export/add)) - (export "rerenamed_sub" (func $export/mul)) - (export "renamed_ns.two" (func $export/ns.two)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) - (export "ExportsNamespace.add" (func $exports/add)) - (export "ExportsNamespace.subOpt" (func $exports/subOpt@varargs)) - (export "ExportsNamespace.math.sub" (func $exports/math.sub)) - (export "ExportsNamespace.Animal.CAT" (global $exports/Animal.CAT)) - (export "ExportsNamespace.Animal.DOG" (global $exports/Animal.DOG)) - (export "ExportsNamespace.animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "ExportsNamespace.animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "ExportsNamespace.Car" (global $exports/Car)) - (export "ExportsNamespace.Car.TIRES" (global $exports/Car.TIRES)) - (export "ExportsNamespace.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.vehicles.Car" (global $exports/vehicles.Car)) - (export "ExportsNamespace.vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "ExportsNamespace.vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) - (export "ExportsNamespace.outer.inner.a" (global $exports/outer.inner.a)) - (export "ExportsNamespace.renamed_mul" (func $export/mul)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (export "Car#get:doors" (func $export:exports/Car#get:doors)) - (export "Car#set:doors" (func $export:exports/Car#set:doors)) - (export "Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $export:exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $export:exports/Car#set:numDoors)) - (export "Car#openDoors" (func $export:exports/Car#openDoors)) - (export "ExportsNamespace.Car#get:doors" (func $export:exports/Car#get:doors)) - (export "ExportsNamespace.Car#set:doors" (func $export:exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $export:exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $export:exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:numDoors" (func $export:exports/Car#set:numDoors)) - (export "ExportsNamespace.Car#openDoors" (func $export:exports/Car#openDoors)) - (export "ExportsNamespace.vehicles.Car#get:doors" (func $export:exports/vehicles.Car#get:doors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $export:exports/vehicles.Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $export:exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $export:exports/vehicles.Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $export:exports/vehicles.Car#set:numDoors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $export:exports/vehicles.Car#openDoors)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - 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 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 272 - i32.const 336 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 144 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - 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 $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 416 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - 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 - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 80 - i32.const 416 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 80 - i32.const 144 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - global.get $exports/Car.TIRES - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $exports/Car#set:doors - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/math.sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES - ) - (func $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - ) - (func $exports/vehicles.Car#openDoors (param $0 i32) - nop - ) - (func $export-default/theDefault - nop - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - ) - (func $exports/subOpt@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 - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/subOpt - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor - ) - (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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $exports/vehicles.Car - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $exports/vehicles.Car $invalid - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - call $start:reexport - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 16912 - i32.const 16960 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:reexport - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - i32.const 2 - call $export/add - i32.const 3 - i32.const 4 - call $export/mul - i32.add - drop - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - 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 - global.set $reexport/car - global.get $reexport/car - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $exports/Car#set:doors - local.get $0 - local.get $1 - call $exports/Car#set:doors - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $exports/vehicles.Car#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $exports/Car#get:doors - 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:exports/Car#set:doors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#set:doors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/Car#get:numDoors (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 $exports/Car#get:numDoors - 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:exports/Car#set:numDoors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/Car#set:numDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/Car#openDoors (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 $exports/Car#openDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#get:doors (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $exports/vehicles.Car#get:doors - 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:exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:doors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:exports/vehicles.Car#get:numDoors (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 $exports/vehicles.Car#get:numDoors - 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:exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $exports/vehicles.Car#set:numDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:exports/vehicles.Car#openDoors (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 $exports/vehicles.Car#openDoors - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) -) diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.debug.wat similarity index 91% rename from tests/compiler/rereexport.untouched.wat rename to tests/compiler/rereexport.debug.wat index 2ee9a00878..f20b059dec 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.debug.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -28,8 +28,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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)) @@ -57,14 +56,6 @@ (export "renamed_renamed_b" (global $export/b)) (export "default" (func $export-default/theDefault)) (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) (export "memory" (memory $0)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) @@ -2107,237 +2098,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2387,7 +2147,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $exports/Car#get:numDoors (param $0 i32) (result i32) @@ -2397,17 +2157,6 @@ (func $export-default/theDefault nop ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) global.get $rereexport/car diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.release.wat similarity index 96% rename from tests/compiler/rereexport.optimized.wat rename to tests/compiler/rereexport.release.wat index 867048c7c1..eb9238d18c 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.release.wat @@ -1,6 +1,5 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) @@ -10,7 +9,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -48,26 +46,8 @@ (export "renamed_renamed_b" (global $export/b)) (export "default" (func $export-default/theDefault)) (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export-default/theDefault)) - (export "exportstar.default.two" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -1046,11 +1026,6 @@ (func $export-default/theDefault nop ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $exports/Car @@ -1457,33 +1432,8 @@ i32.const 20 i32.add local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub i32.const 0 - i32.store8 + i32.store align=1 local.get $2 local.get $0 i32.store diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.debug.wat similarity index 73% rename from tests/compiler/resolve-access.untouched.wat rename to tests/compiler/resolve-access.debug.wat index 11df03b345..671c53722f 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.debug.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) @@ -29,9 +29,9 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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 2324)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18708)) @@ -2081,237 +2081,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2361,1262 +2130,9 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 @@ -3628,7 +2144,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.release.wat similarity index 70% rename from tests/compiler/resolve-access.optimized.wat rename to tests/compiler/resolve-access.release.wat index 87dc821e0b..6d8352ab87 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.release.wat @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) @@ -1282,7 +1282,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1297,7 +1297,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1310,7 +1310,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1318,7 +1318,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1329,16 +1329,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1349,16 +1349,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1366,7 +1366,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1374,8 +1374,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1392,7 +1392,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1402,13 +1402,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1421,40 +1421,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1514,976 +1514,117 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 + local.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 0 - i32.store8 offset=2 - local.get $3 + 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 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + 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 $2 i32.const 2 i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 + local.tee $2 + i32.const 1 + i32.shl local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 i32.add - local.tee $1 - i32.const 0 - i32.store local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 + i32.load i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 i32.sub - i32.const 0 - i32.store + i32.const 1 + i32.shl local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.add local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load i32.store - local.get $3 - i32.const 16 + else + local.get $2 + i32.const 1 i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 + i32.const 1 + i32.shl + local.get $0 i32.add - local.tee $3 + local.get $1 + i32.const 48 i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.store16 end - local.get $2 ) - (func $~lib/util/memory/memcpy (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8 - local.set $5 - i32.const 1056 - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $5 - select - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $5 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $5 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 3 - i32.sub - local.set $5 - loop $while-continue|3 - local.get $5 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $2 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $3 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $2 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $4 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $5 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|4 - local.get $5 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $2 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $3 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $2 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $4 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|5 - local.get $5 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $2 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $3 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $2 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $4 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|5 - end - end - end - end - local.get $5 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - 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 $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 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 $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - else - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/number/U64#toString (param $0 i64) (result i32) + (func $~lib/number/U64#toString (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2737,26 +1878,16 @@ block $folding-inner0 block $invalid block $resolve-access/Container - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $resolve-access/Container $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end return @@ -2811,9 +1942,6 @@ (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 @@ -2824,10 +1952,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $0 i32.const 0 i32.store - local.get $6 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2836,200 +1964,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 i32.const 0 i32.store i32.const 8 - local.set $7 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 i32.const 1056 - local.set $0 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $1 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $1 - i32.sub - i32.const -16 - i32.le_u - if - local.get $1 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - i32.const 1056 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $1 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $7 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $7 - i32.const 1056 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $7 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $5 - local.get $4 + i64.load align=1 + i64.store align=1 + local.get $1 + local.get $3 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 - local.get $4 + local.tee $2 + local.get $3 i32.store - local.get $4 + local.get $3 if - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -3040,60 +1996,60 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $4 + local.get $3 i32.const 20 i32.sub - local.tee $1 + local.tee $4 i32.load offset=4 i32.const 3 i32.and i32.eq if - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=4 i32.const 3 i32.and - local.tee $2 + local.tee $1 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - local.get $1 + local.get $4 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 i32.eq - local.get $2 + local.get $1 i32.const 3 i32.eq i32.and if - local.get $1 + local.get $4 call $~lib/rt/itcms/Object#makeGray end end end end - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.store offset=4 - local.get $0 + local.get $2 i32.const 8 i32.store offset=8 - local.get $0 + local.get $2 i32.const 1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 local.get $0 + local.get $2 i32.store - local.get $0 + local.get $2 i32.load offset=12 i32.eqz if @@ -3104,7 +2060,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=4 i64.load call $~lib/number/U64#toString @@ -3220,7 +2176,7 @@ local.get $0 i64.load i32.wrap_i64 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3233,7 +2189,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/utoa32 - local.get $0 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3241,66 +2197,66 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1728 - local.set $1 + local.set $0 br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 local.get $2 + local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3311,7 +2267,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 return end i32.const 19760 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.debug.wat similarity index 83% rename from tests/compiler/resolve-binary.untouched.wat rename to tests/compiler/resolve-binary.debug.wat index 740e8907c9..13f2f9e6ee 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.debug.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -21,7 +21,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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)) @@ -34,7 +34,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.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)) @@ -45,58 +45,57 @@ (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 10224)) - (global $~lib/memory/__data_end i32 (i32.const 10268)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 26652)) - (global $~lib/memory/__heap_base i32 (i32.const 26652)) + (global $~lib/rt/__rtti_base i32 (i32.const 10192)) + (global $~lib/memory/__data_end i32 (i32.const 10236)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 26620)) + (global $~lib/memory/__heap_base i32 (i32.const 26620)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 172) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 528) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 560) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 652) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 704) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 732) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (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 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2416) "\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\0d=\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\0dV]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\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data (i32.const 8604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data (i32.const 8636) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 8684) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 8736) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8792) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\93i\1b\04\bd\00\00\00\00\00\00\f6?\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\0d=\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\0dV]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\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data (i32.const 8604) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 8652) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (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 (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_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -26,7 +26,7 @@ (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 27676)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 27644)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\01\00\00\00\08\00\00\00t\00r\00u\00e") @@ -34,208 +34,63 @@ (data (i32.const 1080) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") (data (i32.const 1100) "<") (data (i32.const 1112) "\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1164) "\1c") - (data (i32.const 1176) "\01\00\00\00\02\00\00\00a") - (data (i32.const 1196) "|") - (data (i32.const 1208) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1324) "<") - (data (i32.const 1336) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1388) "\1c") - (data (i32.const 1400) "\01\00\00\00\02\00\00\000") - (data (i32.const 1420) "<") - (data (i32.const 1432) "\01\00\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 (i32.const 1484) "<") - (data (i32.const 1496) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1612) "<") - (data (i32.const 1624) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1676) ",") - (data (i32.const 1688) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1756) "<") - (data (i32.const 1768) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2220) "\1c\04") - (data (i32.const 2232) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 3276) "\\") - (data (i32.const 3288) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 1164) "|") + (data (i32.const 1176) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1292) "<") + (data (i32.const 1304) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1356) "\1c") + (data (i32.const 1368) "\01\00\00\00\02\00\00\000") + (data (i32.const 1388) "<") + (data (i32.const 1400) "\01\00\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 (i32.const 1452) "<") + (data (i32.const 1464) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1580) "<") + (data (i32.const 1592) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1644) ",") + (data (i32.const 1656) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1724) "<") + (data (i32.const 1736) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 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 (i32.const 2188) "\1c\04") + (data (i32.const 2200) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3244) "\\") + (data (i32.const 3256) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3340) "\1c") + (data (i32.const 3352) "\01\00\00\00\02\00\00\001") (data (i32.const 3372) "\1c") - (data (i32.const 3384) "\01\00\00\00\02\00\00\001") - (data (i32.const 3404) "\1c") - (data (i32.const 3416) "\01\00\00\00\02\00\00\002") - (data (i32.const 3445) "\a0\f6?") - (data (i32.const 3457) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") - (data (i32.const 3489) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") - (data (i32.const 3521) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") - (data (i32.const 3553) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") - (data (i32.const 3585) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") - (data (i32.const 3617) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") - (data (i32.const 3649) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") - (data (i32.const 3681) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") - (data (i32.const 3713) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") - (data (i32.const 3745) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") - (data (i32.const 3777) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") - (data (i32.const 3809) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") - (data (i32.const 3841) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") - (data (i32.const 3873) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") - (data (i32.const 3905) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") - (data (i32.const 3937) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") - (data (i32.const 3969) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") - (data (i32.const 4001) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") - (data (i32.const 4033) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") - (data (i32.const 4065) "@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?") - (data (i32.const 4097) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") - (data (i32.const 4129) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") - (data (i32.const 4161) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") - (data (i32.const 4193) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") - (data (i32.const 4225) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") - (data (i32.const 4257) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") - (data (i32.const 4289) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") - (data (i32.const 4321) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") - (data (i32.const 4353) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") - (data (i32.const 4385) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") - (data (i32.const 4417) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") - (data (i32.const 4449) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") - (data (i32.const 4481) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") - (data (i32.const 4513) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") - (data (i32.const 4545) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") - (data (i32.const 4577) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") - (data (i32.const 4609) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") - (data (i32.const 4641) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") - (data (i32.const 6145) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") - (data (i32.const 6177) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") - (data (i32.const 6209) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") - (data (i32.const 6241) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") - (data (i32.const 6273) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") - (data (i32.const 6305) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") - (data (i32.const 6337) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") - (data (i32.const 6369) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") - (data (i32.const 6401) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") - (data (i32.const 6433) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") - (data (i32.const 6465) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") - (data (i32.const 6497) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") - (data (i32.const 6529) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") - (data (i32.const 6561) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") - (data (i32.const 6593) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") - (data (i32.const 6625) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") - (data (i32.const 6657) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") - (data (i32.const 6689) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") - (data (i32.const 6722) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") - (data (i32.const 6754) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") - (data (i32.const 6785) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") - (data (i32.const 6817) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") - (data (i32.const 6849) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") - (data (i32.const 6881) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") - (data (i32.const 6913) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") - (data (i32.const 6945) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") - (data (i32.const 6978) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") - (data (i32.const 7009) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") - (data (i32.const 7041) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") - (data (i32.const 7073) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") - (data (i32.const 7105) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") - (data (i32.const 7137) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") - (data (i32.const 7169) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") - (data (i32.const 7201) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") - (data (i32.const 7233) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") - (data (i32.const 7265) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 9596) "\1c") - (data (i32.const 9608) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 9628) "\1c") - (data (i32.const 9640) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 9660) ",") - (data (i32.const 9672) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9708) ",") - (data (i32.const 9720) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9816) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\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\0d=\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\0dV]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\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 9564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 9596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 9628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9676) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (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_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -32,9 +32,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -42,6 +41,7 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 3776)) (global $~lib/memory/__data_end i32 (i32.const 3828)) @@ -2105,237 +2105,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2385,7 +2154,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -3077,1259 +2846,6 @@ end unreachable ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -4579,7 +3095,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -4616,7 +3132,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -4723,7 +3239,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -4937,7 +3453,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -6307,7 +4823,7 @@ local.get $2 i32.const 752 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.release.wat similarity index 80% rename from tests/compiler/resolve-elementaccess.optimized.wat rename to tests/compiler/resolve-elementaccess.release.wat index 637e4e4fb5..7c9bd5f70a 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1334,7 +1334,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1349,7 +1349,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1362,7 +1362,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1370,7 +1370,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1381,16 +1381,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1401,16 +1401,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1418,7 +1418,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1426,8 +1426,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1444,7 +1444,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1454,13 +1454,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1473,40 +1473,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1566,182 +1566,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 @@ -2216,928 +2045,55 @@ i32.store16 local.get $4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $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) loop $while-continue|0 local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select + i32.const 10000 + i32.ge_u if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 local.get $1 - local.tee $4 - i32.const 1 - i32.add + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 local.get $2 - i32.const 1 + i32.const 4 i32.sub - local.set $2 + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2744 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2744 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store br $while-continue|0 end end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u + local.get $1 + i32.const 100 + i32.ge_u if local.get $2 i32.const 2 @@ -3195,6 +2151,7 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $2 i32.eqz if @@ -3273,7 +2230,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 @@ -3301,7 +2258,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 3014704 i32.store @@ -3333,68 +2290,69 @@ local.get $1 i32.const 1 i32.eq - if (result i32) + if local.get $0 i32.const 101 i32.store16 offset=2 local.get $0 i32.const 4 i32.add + local.tee $2 local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -3404,13 +2362,12 @@ i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $2 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select - i32.store16 offset=4 - local.get $1 + i32.store16 else local.get $0 i32.const 4 @@ -3424,26 +2381,27 @@ local.tee $2 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 local.get $0 local.get $2 i32.add - local.tee $2 + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $2 + local.get $0 i32.const 4 i32.add + local.tee $4 local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $2 if i32.const 0 local.get $0 @@ -3501,16 +2459,18 @@ i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $4 i32.const 45 i32.const 43 - local.get $3 + local.get $2 select - i32.store16 offset=4 + i32.store16 local.get $0 local.get $1 i32.add + local.set $1 end + local.get $1 i32.const 2 i32.add end @@ -3619,7 +2579,7 @@ f64.const 347 f64.add local.tee $0 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.tee $7 local.get $0 local.get $7 @@ -3655,37 +2615,36 @@ local.tee $1 i64.const 4294967295 i64.and - local.set $3 + local.set $4 local.get $1 i64.const 32 i64.shr_u - local.tee $9 + local.tee $1 global.get $~lib/util/number/_frc_pow - local.tee $10 + local.tee $9 i64.const 4294967295 i64.and - local.tee $11 - local.tee $1 + local.tee $10 i64.mul - local.get $1 - local.get $3 + local.get $4 + local.get $10 i64.mul i64.const 32 i64.shr_u i64.add - local.set $4 + local.set $11 global.get $~lib/util/number/_frc_plus - local.tee $1 + local.tee $3 i64.const 4294967295 i64.and local.set $12 - local.get $1 + local.get $3 i64.const 32 i64.shr_u - local.tee $1 - local.get $11 + local.tee $3 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $12 i64.mul i64.const 32 @@ -3701,35 +2660,34 @@ i64.const 32 i64.shr_u local.tee $13 - local.get $11 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $11 + local.set $10 local.get $2 i32.const 1 i32.shl i32.const 1776 i32.add + local.get $1 local.get $9 - local.get $10 i64.const 32 i64.shr_u local.tee $9 - local.tee $10 i64.mul - local.get $4 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $10 - i64.mul local.get $4 + local.get $9 + i64.mul + local.get $11 i64.const 4294967295 i64.and i64.add @@ -3738,7 +2696,7 @@ i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 local.get $9 i64.mul local.get $5 @@ -3769,14 +2727,14 @@ local.get $9 local.get $13 i64.mul - local.get $11 + local.get $10 i64.const 32 i64.shr_u i64.add local.get $9 local.get $14 i64.mul - local.get $11 + local.get $10 i64.const 4294967295 i64.and i64.add @@ -3879,7 +2837,7 @@ local.get $2 i32.const 1776 local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.debug.wat similarity index 93% rename from tests/compiler/resolve-function-expression.untouched.wat rename to tests/compiler/resolve-function-expression.debug.wat index 9a94ff8609..d745521c1b 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.debug.wat @@ -27,8 +27,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 2400)) (global $~lib/memory/__data_end i32 (i32.const 2436)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18820)) @@ -2148,237 +2148,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2428,7 +2197,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.release.wat similarity index 74% rename from tests/compiler/resolve-function-expression.optimized.wat rename to tests/compiler/resolve-function-expression.release.wat index 2e76ebebed..e22ce999f8 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -1101,482 +1101,520 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (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 3460 + i32.lt_s if - i32.const 1456 - i32.const 1520 - i32.const 260 - i32.const 31 + i32.const 19872 + i32.const 19920 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $3 + i32.add + local.tee $2 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1073741804 + i32.ge_u + if + i32.const 1456 + i32.const 1520 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 local.set $1 - 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 + 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 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end + global.get $~lib/rt/itcms/total + local.tee $1 local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1792 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $6 i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add - i32.const 65535 + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1792 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 12 + local.get $1 + i32.const 19 i32.add - i32.const -65536 + i32.const -16 i32.and - i32.const 16 - i32.shr_u - local.tee $3 + i32.const 4 + i32.sub local.get $1 - local.get $3 - i32.gt_s + i32.const 12 + i32.le_u select - memory.grow - i32.const 0 - i32.lt_s + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $3 + memory.size + local.tee $1 + 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.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $8 + i32.add + local.get $8 + local.get $8 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $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 + i32.const 16 + i32.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 1792 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort unreachable end end - local.get $4 local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.load + i32.const -4 + i32.and + local.get $8 + i32.lt_u if i32.const 0 i32.const 1792 - i32.const 496 - i32.const 16 + i32.const 498 + i32.const 14 call $~lib/builtins/abort unreachable end - end - local.get $1 - i32.load - i32.const -4 - i32.and - local.get $2 - i32.lt_u - if - i32.const 0 - i32.const 1792 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $5 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1792 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if + local.get $7 local.get $1 - local.get $5 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $2 + call $~lib/rt/tlsf/removeBlock local.get $1 + i32.load + local.set $5 + local.get $8 i32.const 4 i32.add - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $5 - i32.const -2 + i32.const 15 i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + if + i32.const 0 + i32.const 1792 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 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 1 - 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 - global.get $~lib/rt/itcms/white - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 + local.get $8 i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 + local.tee $9 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $5 + i32.const 2 + i32.and + local.get $8 + i32.or + i32.store + local.get $8 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $5 + local.get $9 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $7 + local.get $5 + 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 $5 + local.get $5 + i32.load + i32.const -3 + i32.and + i32.store + end local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 + i32.const 1 + i32.store offset=12 local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 + local.get $6 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $5 + i32.load offset=8 + local.set $7 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + local.get $5 + i32.or + i32.store offset=4 local.get $1 - i32.sub + local.get $7 + i32.store offset=8 + local.get $7 + local.get $7 + i32.load offset=4 i32.const 3 i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 local.get $1 - i32.const 0 + i32.or i32.store offset=4 + local.get $5 local.get $1 - i32.const 0 i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 + global.get $~lib/rt/itcms/total local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + 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 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub + i32.add + local.tee $1 i32.const 0 - i32.store - local.get $1 + local.get $6 + memory.fill local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 + i32.store loop $while-continue|0 local.get $0 - i32.const 32 + i32.const 10000 i32.ge_u if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 local.get $0 - i32.const 32 - i32.sub + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u local.set $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl local.get $1 - i32.const 32 i32.add - local.set $1 + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store br $while-continue|0 end end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + else + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $2 + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1624,409 +1662,209 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3460 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 2 - i32.const 1056 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 3460 + i32.lt_s + if + i32.const 19872 + i32.const 19920 + 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 2 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1168 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 i32.const 1 - i32.const 1168 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 19844 + 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 + block $__inlined_func$~lib/string/String.__eq (result i32) + i32.const 0 + i32.const 1200 i32.load call_indirect $0 (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 19844 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $4 + i32.store + local.get $0 + i32.const 3408 + i32.store offset=4 + i32.const 3408 + local.set $3 + i32.const 1 + local.get $4 + i32.const 3408 + i32.eq + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + i32.const 3408 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $4 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 3404 + i32.load 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 - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 0 - i32.const 1200 - i32.load - call_indirect $0 (type $i32_=>_i32) - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.ne + br_if $__inlined_func$~lib/string/String.__eq + drop + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + i32.const 7 + i32.and + i32.eqz + local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3460 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $3 - br $__inlined_func$~lib/util/number/itoa32 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $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.ge_u + i32.and + if + loop $do-loop|0 + local.get $4 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $4 + i32.const 8 i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u + local.set $4 + local.get $3 i32.const 8 i32.add - local.get $0 - i32.const 100000000 + local.set $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 i32.ge_u - i32.add + br_if $do-loop|0 end end + end + loop $while-continue|1 local.get $1 - i32.add - local.tee $2 + local.tee $0 i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - 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 $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end + i32.sub + local.set $1 local.get $0 - i32.const 100 - i32.ge_u if - local.get $2 - i32.const 2 - i32.sub + local.get $4 + i32.load16_u local.tee $2 - i32.const 1 - i32.shl local.get $3 - i32.add - local.get $0 - i32.const 100 - i32.rem_u + i32.load16_u + local.tee $0 + i32.ne + if + local.get $2 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $4 i32.const 2 - i32.shl - i32.const 1836 i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl + local.set $4 local.get $3 - i32.add - local.get $0 i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $3 - i32.add - local.get $0 - i32.const 48 i32.add - i32.store16 - end - local.get $1 - if - local.get $3 - i32.const 45 - i32.store16 + local.set $3 + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $3 - i32.store - local.get $0 - i32.const 3408 - i32.store offset=4 - i32.const 3408 - local.set $2 - i32.const 1 - local.get $3 - i32.const 3408 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop i32.const 0 - i32.const 3408 - i32.const 0 - local.get $3 - select - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 3404 - i32.load - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $3 - i32.const 7 - i32.and - i32.eqz - local.get $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $3 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - local.get $2 - i32.load16_u - local.tee $1 - local.get $3 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $4 - local.get $1 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - end - i32.eqz end i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 19872 - i32.const 19920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) diff --git a/tests/compiler/resolve-localortype.untouched.wat b/tests/compiler/resolve-localortype.debug.wat similarity index 100% rename from tests/compiler/resolve-localortype.untouched.wat rename to tests/compiler/resolve-localortype.debug.wat diff --git a/tests/compiler/resolve-localortype.optimized.wat b/tests/compiler/resolve-localortype.release.wat similarity index 100% rename from tests/compiler/resolve-localortype.optimized.wat rename to tests/compiler/resolve-localortype.release.wat diff --git a/tests/compiler/resolve-nested.debug.wat b/tests/compiler/resolve-nested.debug.wat new file mode 100644 index 0000000000..c71327a8ba --- /dev/null +++ b/tests/compiler/resolve-nested.debug.wat @@ -0,0 +1,68 @@ +(module + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) + (import "env" "abort" (func $~lib/builtins/abort (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)) + (global $resolve-nested/Outer.Inner.d (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.e (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.f (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.a (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.b (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.c (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.d (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.e (mut i32) (i32.const 0)) + (global $resolve-nested/a (mut i32) (i32.const 0)) + (global $resolve-nested/b (mut i32) (i32.const 0)) + (global $resolve-nested/c (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) + (memory $0 0) + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "outer" (func $export:resolve-nested/outer)) + (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + nop + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16416 + i32.const 16464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $2 + call $resolve-nested/outer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat deleted file mode 100644 index b1181d460c..0000000000 --- a/tests/compiler/resolve-nested.optimized.wat +++ /dev/null @@ -1,1667 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (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)) - (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 $resolve-nested/Outer.InnerClass i32 (i32.const 4)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17876)) - (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\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 (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1292) ",") - (data (i32.const 1304) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1440) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1468) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "memory" (memory $0)) - (export "Outer.InnerClass#constructor" (func $export:resolve-nested/Outer.InnerClass#constructor)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $export:resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $export:resolve-nested/Outer.inner)) - (export "outer" (func $export:resolve-nested/outer)) - (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1056 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 159 - 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/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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $3 - local.get $2 - local.get $4 - 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 $3 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $4 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - local.get $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $2 - local.get $5 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - 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 $5 - i32.const 2 - i32.shl - local.get $0 - 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 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 377 - 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 $4 - if - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $4 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 17888 - i32.const 0 - i32.store - i32.const 19456 - 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 17888 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 17888 - 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 17888 - i32.const 19460 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 17888 - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17876 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 17876 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - 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 17876 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - 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 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $1 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - 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.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $4 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $4 - 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 $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - 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 - ) - (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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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 - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17876 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) - (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - if - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $0 - i32.store - local.get $6 - local.get $1 - i32.store offset=4 - local.get $6 - local.get $2 - i32.store offset=8 - local.get $6 - local.get $3 - i32.store offset=12 - local.get $6 - local.get $4 - i32.store offset=16 - local.get $6 - local.get $5 - i32.store offset=20 - local.get $6 - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - if - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $2 - i32.store offset=8 - local.get $5 - local.get $3 - i32.store offset=12 - local.get $5 - local.get $4 - i32.store offset=16 - local.get $5 - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - if - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $1 - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 17876 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $0 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) -) diff --git a/tests/compiler/resolve-nested.release.wat b/tests/compiler/resolve-nested.release.wat new file mode 100644 index 0000000000..f4c3c00d39 --- /dev/null +++ b/tests/compiler/resolve-nested.release.wat @@ -0,0 +1,41 @@ +(module + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) + (memory $0 0) + (export "memory" (memory $0)) + (export "outer" (func $export:resolve-nested/outer)) + (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/resolve-nested.ts b/tests/compiler/resolve-nested.ts index a2fa919378..38082458b6 100644 --- a/tests/compiler/resolve-nested.ts +++ b/tests/compiler/resolve-nested.ts @@ -1,5 +1,5 @@ class OuterClass {} -export namespace Outer { +namespace Outer { export class InnerClass {} export namespace Inner { export class EvenInnerClass {} diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat deleted file mode 100644 index c8c8038796..0000000000 --- a/tests/compiler/resolve-nested.untouched.wat +++ /dev/null @@ -1,2749 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (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)) - (global $resolve-nested/Outer.Inner.d (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.e (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.f (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.a (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.b (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.c (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.d (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.e (mut i32) (i32.const 0)) - (global $resolve-nested/a (mut i32) (i32.const 0)) - (global $resolve-nested/b (mut i32) (i32.const 0)) - (global $resolve-nested/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/shared/runtime/Runtime.Stub i32 (i32.const 0)) - (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) - (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 468)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16852)) - (global $~lib/memory/__heap_base i32 (i32.const 16852)) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (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\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 funcref) - (elem $0 (i32.const 1)) - (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "memory" (memory $0)) - (export "Outer.InnerClass#constructor" (func $export:resolve-nested/Outer.InnerClass#constructor)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $export:resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $export:resolve-nested/Outer.inner)) - (export "outer" (func $export:resolve-nested/outer)) - (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 224 - i32.const 288 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 96 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 96 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - nop - ) - (func $resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - nop - ) - (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - nop - ) - (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 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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 - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - 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 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 16880 - i32.const 16928 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - 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:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $resolve-nested/Outer.InnerClass#constructor - 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:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $resolve-nested/Outer.Inner.EvenInnerClass#constructor - 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:resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $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 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $1 - local.get $2 - local.get $3 - local.get $4 - local.get $5 - call $resolve-nested/Outer.Inner.evenInner - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - 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 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $1 - local.get $2 - local.get $3 - local.get $4 - call $resolve-nested/Outer.inner - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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=8 - local.get $0 - local.get $1 - local.get $2 - call $resolve-nested/outer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) -) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.debug.wat similarity index 91% rename from tests/compiler/resolve-new.untouched.wat rename to tests/compiler/resolve-new.debug.wat index 534a0de5f0..78c668ceeb 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 452)) @@ -2063,237 +2062,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2343,7 +2111,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $resolve-new/Foo#bar (param $0 i32) diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.release.wat similarity index 99% rename from tests/compiler/resolve-new.optimized.wat rename to tests/compiler/resolve-new.release.wat index 1c8e9ee99c..19c3ca58e8 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.release.wat @@ -1334,11 +1334,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.debug.wat similarity index 94% rename from tests/compiler/resolve-propertyaccess.untouched.wat rename to tests/compiler/resolve-propertyaccess.debug.wat index 08355c586a..abfc82212e 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.debug.wat @@ -27,8 +27,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) (global $resolve-propertyaccess/MergedNamespace.lazyMember i32 (i32.const 22)) @@ -2149,237 +2149,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2429,7 +2198,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.release.wat similarity index 93% rename from tests/compiler/resolve-propertyaccess.optimized.wat rename to tests/compiler/resolve-propertyaccess.release.wat index f985cf692e..5a2ae47e7f 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -1169,7 +1169,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1184,7 +1184,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1197,7 +1197,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1205,7 +1205,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1216,16 +1216,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1236,16 +1236,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1253,7 +1253,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1261,8 +1261,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1279,7 +1279,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1289,13 +1289,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1308,40 +1308,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1401,182 +1401,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.debug.wat similarity index 78% rename from tests/compiler/resolve-ternary.untouched.wat rename to tests/compiler/resolve-ternary.debug.wat index 6cb50eb234..9c31f57473 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -2,9 +2,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -31,8 +31,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -2156,237 +2156,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2436,7 +2205,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -3456,1259 +3225,6 @@ end unreachable ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -4818,7 +3334,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -4855,7 +3371,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -4962,7 +3478,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -5176,7 +3692,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -5962,7 +4478,7 @@ local.get $2 i32.const 2448 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.release.wat similarity index 76% rename from tests/compiler/resolve-ternary.optimized.wat rename to tests/compiler/resolve-ternary.release.wat index 3f30a11824..f30db6d1d3 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1173,7 +1173,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $3 local.get $0 i32.const 16 i32.add @@ -1188,7 +1188,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 12 local.get $1 i32.const 19 @@ -1201,7 +1201,7 @@ i32.const 12 i32.le_u select - local.tee $2 + local.tee $4 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1209,7 +1209,7 @@ memory.size local.tee $1 i32.const 4 - local.get $4 + local.get $3 i32.load offset=1568 local.get $1 i32.const 16 @@ -1220,16 +1220,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $2 + local.get $4 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $2 + local.get $4 i32.add - local.get $2 - local.get $2 + local.get $4 + local.get $4 i32.const 536870910 i32.lt_u select @@ -1240,16 +1240,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $2 local.get $1 - local.get $3 + local.get $2 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1257,7 +1257,7 @@ unreachable end end - local.get $4 + local.get $3 local.get $1 i32.const 16 i32.shl @@ -1265,8 +1265,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $3 local.get $4 - local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1283,7 +1283,7 @@ i32.load i32.const -4 i32.and - local.get $2 + local.get $4 i32.lt_u if i32.const 0 @@ -1293,13 +1293,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $5 - local.get $2 + local.set $2 + local.get $4 i32.const 4 i32.add i32.const 15 @@ -1312,40 +1312,40 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 i32.const -4 i32.and - local.get $2 + local.get $4 i32.sub - local.tee $3 + local.tee $5 i32.const 16 i32.ge_u if local.get $1 - local.get $5 + local.get $2 i32.const 2 i32.and - local.get $2 + local.get $4 i32.or i32.store - local.get $2 + local.get $4 local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $3 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $5 + local.get $2 i32.const -2 i32.and i32.store @@ -1405,182 +1405,11 @@ local.get $1 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.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) @@ -2230,912 +2059,39 @@ i32.store16 local.get $4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + local.get $1 + i32.eqz + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return end local.get $0 - i32.const 3 + local.get $1 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s i32.and - i32.eqz - if - loop $while-continue|1 + if (result i32) + loop $for-loop|0 + local.get $0 local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s + i32.lt_s if local.get $0 i32.const 1 @@ -3184,7 +2140,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $2 i32.const 46 i32.store16 @@ -3212,7 +2168,7 @@ local.get $0 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy i32.const 3472 i32.const 3014704 i32.store @@ -3248,7 +2204,6 @@ i32.const 3474 i32.const 101 i32.store16 - i32.const 3476 local.get $2 i32.const 1 i32.sub @@ -3262,6 +2217,7 @@ i32.sub local.set $0 end + i32.const 3476 local.get $0 local.get $0 i32.const 100000 @@ -3328,7 +2284,7 @@ local.tee $1 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy i32.const 3474 i32.const 46 i32.store16 @@ -3338,9 +2294,6 @@ local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $3 - i32.const 4 - i32.add local.get $2 i32.const 1 i32.sub @@ -3354,6 +2307,9 @@ i32.sub local.set $1 end + local.get $3 + i32.const 4 + i32.add local.get $1 local.get $1 i32.const 100000 @@ -3700,7 +2656,7 @@ local.get $4 i32.const 3472 local.get $0 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.debug.wat similarity index 94% rename from tests/compiler/resolve-unary.untouched.wat rename to tests/compiler/resolve-unary.debug.wat index 6e43525dc4..a8c6609df6 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.debug.wat @@ -26,8 +26,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-unary/a (mut i32) (i32.const 1)) (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) @@ -2146,237 +2146,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2426,7 +2195,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -3089,14 +2858,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill memory.size i32.const 16 i32.shl diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.release.wat similarity index 93% rename from tests/compiler/resolve-unary.optimized.wat rename to tests/compiler/resolve-unary.release.wat index 1de537e155..aa676eb8b1 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -1189,7 +1189,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1204,7 +1204,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1217,7 +1217,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1225,7 +1225,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1236,16 +1236,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1256,16 +1256,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1273,7 +1273,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1281,8 +1281,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1299,7 +1299,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1309,13 +1309,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1328,40 +1328,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1421,182 +1421,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) @@ -1977,15 +1806,9 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill memory.size i32.const 16 i32.shl diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.debug.wat similarity index 100% rename from tests/compiler/retain-i32.untouched.wat rename to tests/compiler/retain-i32.debug.wat diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.release.wat similarity index 100% rename from tests/compiler/retain-i32.optimized.wat rename to tests/compiler/retain-i32.release.wat diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat deleted file mode 100644 index 3de47307df..0000000000 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ /dev/null @@ -1,2711 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1132) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\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 (i32.const 1196) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1260) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1324) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 1372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 1532) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1596) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1648) "\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\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1716 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741820 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 12 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=4 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=8 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - 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 $7 i32) - (local $8 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 200 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 202 - 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 $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - 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 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 223 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 4 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741820 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741820 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 12 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 238 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 239 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 255 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - 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 $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1280 - i32.const 380 - 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 $2 - i32.const -16 - i32.and - local.get $0 - i32.load offset=1568 - local.tee $2 - if - local.get $1 - local.get $2 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1280 - i32.const 387 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $2 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1280 - i32.const 400 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - 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 $0 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1728 - i32.const 0 - i32.store - i32.const 3296 - 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 1728 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 16 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1728 - 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 - i32.const 1728 - i32.const 3300 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1728 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u - if - i32.const 1152 - i32.const 1280 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $0 - i32.const 12 - i32.le_u - select - ) - (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 - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 333 - 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 1280 - i32.const 346 - 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/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1280 - i32.const 360 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 498 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1280 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $1 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1152 - i32.const 1216 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1716 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1216 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (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.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - call $~lib/memory/memory.copy - local.get $1 - i32.const 1716 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $2 - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1152 - i32.const 1216 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $1 - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 1716 - i32.lt_u - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $2 - call $~lib/rt/tlsf/moveBlock - local.set $0 - else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.set $0 - block $folding-inner0 - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $5 - local.get $0 - i32.load - local.tee $6 - i32.const -4 - i32.and - local.tee $4 - i32.le_u - br_if $folding-inner0 - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.load - local.tee $8 - i32.const 1 - i32.and - if - local.get $5 - local.get $4 - i32.const 4 - i32.add - local.get $8 - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.le_u - if - local.get $3 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $6 - i32.const 3 - i32.and - i32.or - i32.store - br $folding-inner0 - end - end - local.get $3 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/moveBlock - local.set $0 - br $__inlined_func$~lib/rt/tlsf/reallocateBlock - end - local.get $3 - local.get $0 - local.get $5 - call $~lib/rt/tlsf/prepareBlock - end - end - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 4 - i32.sub - local.get $1 - i32.store offset=16 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - 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 1056 - i32.const 1104 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - i32.load - local.tee $4 - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/pure/__renew - local.tee $1 - i32.add - local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $3 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.add - local.tee $2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 123 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1488 - local.get $2 - select - local.set $3 - block $__inlined_func$~lib/string/String#concat - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - if - local.get $1 - i32.const 1488 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 1488 - local.set $1 - end - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $6 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - i32.add - local.tee $0 - i32.eqz - if - i32.const 1392 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end - local.get $0 - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - local.get $3 - local.get $4 - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $6 - call $~lib/memory/memory.copy - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $start:retain-release-sanity - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 12 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 12 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 12 - i32.store offset=8 - local.get $2 - i32.const 3 - i32.store offset=12 - local.get $2 - call $~lib/array/Array#push - local.get $2 - call $~lib/array/Array#push - local.get $2 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 313 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - drop - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - call $~lib/rt/pure/__release - i32.const 16 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 0 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - loop $for-loop|0 - local.get $3 - i32.const 10 - i32.lt_s - if - i32.const 16 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 0 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $5 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $2 - local.get $2 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.add - local.tee $1 - call $~lib/array/ensureSize - local.get $2 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.const 1392 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $1 - i32.store offset=12 - i32.const 1392 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - call $~lib/rt/pure/__release - i32.const 1424 - i32.const 1456 - call $~lib/string/String.__concat - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 1520 - call $~lib/string/String.__concat - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - i32.const 4 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - i32.const 4 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.set $0 - local.get $1 - local.set $3 - local.get $1 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $2 - local.set $0 - local.get $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.set $3 - local.get $2 - local.get $1 - i32.load - local.tee $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $3 - i32.store - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1216 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1648 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - local.tee $2 - i32.const 256 - local.get $2 - i32.const 256 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $1 - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - if - local.get $1 - i32.const 1716 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - end - end - local.get $2 - global.set $~lib/rt/pure/ROOTS - local.get $2 - local.get $3 - i32.add - global.set $~lib/rt/pure/CUR - local.get $2 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - end - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $1 - local.tee $3 - local.set $4 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.gt_u - if - local.get $4 - i32.load - local.tee $5 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - i32.const 0 - local.get $2 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - select - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $3 - local.get $5 - i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 - else - i32.const 0 - local.get $2 - i32.const 268435455 - i32.and - i32.eqz - local.get $2 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/freeBlock - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - global.set $~lib/rt/pure/CUR - local.get $1 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - local.get $2 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - ) - (func $~start - call $start:retain-release-sanity - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1716 - i32.lt_u - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $0 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 0 - i32.const 1216 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $folding-inner0 $folding-inner0 $folding-inner1 $~lib/array/Array $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $invalid - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - return - end - unreachable - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.tee $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) -) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat deleted file mode 100644 index cc5eb66ae6..0000000000 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ /dev/null @@ -1,4797 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 60) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 108) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\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 (i32.const 172) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 236) "<\00\00\00\01\00\00\00\00\00\00\00\01\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 (i32.const 300) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 348) "\1c\00\00\00\01\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 (i32.const 380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00\00\00\00\00") - (data (i32.const 476) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 508) "<\00\00\00\01\00\00\00\00\00\00\00\01\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 (i32.const 572) ",\00\00\00\01\00\00\00\00\00\00\00\01\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 (i32.const 624) "\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\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A\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 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 624)) - (global $~lib/memory/__heap_base i32 (i32.const 692)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 - local.get $1 - i32.load offset=8 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=8 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - 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 $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 200 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 202 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 223 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 12 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741820 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 238 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 239 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 255 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $11 - i32.store offset=8 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 380 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 387 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 400 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u - if - i32.const 128 - i32.const 256 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 333 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 360 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 498 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 128 - i32.const 192 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $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/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/memory/__heap_base - i32.ge_u - if - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $5 - local.get $3 - local.get $5 - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.load - local.set $8 - local.get $8 - i32.const 1 - i32.and - if - local.get $5 - i32.const 4 - i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $6 - i32.or - i32.store - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return - end - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/rt/tlsf/moveBlock - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if (result i32) - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/moveBlock - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - end - i32.const 4 - i32.add - ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 128 - i32.const 192 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - i32.const 16 - local.get $1 - i32.add - call $~lib/rt/tlsf/__realloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.get $1 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/pure/__renew - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 313 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 464 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 368 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 464 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $retain-release-sanity/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $retain-release-sanity/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $start:retain-release-sanity - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 10 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - i32.const 10 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - i32.const 368 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 400 - local.set $0 - local.get $0 - i32.const 432 - call $~lib/string/String.__concat - local.tee $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 496 - call $~lib/string/String.__concat - local.tee $3 - drop - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - call $retain-release-sanity/A#constructor - local.set $3 - i32.const 0 - call $retain-release-sanity/B#constructor - local.set $2 - local.get $3 - local.tee $5 - local.get $2 - local.tee $4 - local.get $5 - i32.load - local.tee $1 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - i32.store - local.get $3 - local.tee $0 - local.get $2 - local.tee $1 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $0 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $2 - local.tee $1 - local.get $3 - local.tee $0 - local.get $1 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - i32.store - local.get $3 - local.tee $5 - local.get $2 - local.tee $4 - local.get $5 - i32.load - local.tee $1 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - i32.store - local.get $2 - local.tee $0 - local.get $3 - local.tee $1 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 528 - i32.const 592 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - if - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 0 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/finalize - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - drop - local.get $0 - i32.load offset=12 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - drop - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~start - call $start:retain-release-sanity - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 0 - drop - local.get $0 - i32.const 20 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - end - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 1 - drop - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/string/String~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (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/array/Array<~lib/array/Array<~lib/string/String>>#__visit - ) - (func $retain-release-sanity/A~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $retain-release-sanity/B~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $retain-release-sanity/B - block $retain-release-sanity/A - block $~lib/array/Array<~lib/array/Array<~lib/string/String>> - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $~lib/array/Array<~lib/array/Array<~lib/string/String>> $retain-release-sanity/A $retain-release-sanity/B $invalid - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer~visit - return - end - local.get $0 - local.get $1 - call $~lib/string/String~visit - 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 - 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 $retain-release-sanity/A~visit - return - end - local.get $0 - local.get $1 - call $retain-release-sanity/B~visit - return - end - unreachable - ) -) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat deleted file mode 100644 index a8099f3ee2..0000000000 --- a/tests/compiler/retain-release.optimized.wat +++ /dev/null @@ -1,266 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (data (i32.const 1068) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") - (table $0 1 funcref) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $retain-release/REF (mut i32) (i32.const 0)) - (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "returnRef" (func $retain-release/returnRef)) - (export "receiveRef" (func $retain-release/receiveRef)) - (export "receiveRefDrop" (func $retain-release/receiveRef)) - (export "receiveRefRetain" (func $retain-release/receiveRef)) - (export "takeRef" (func $retain-release/takeRef)) - (export "provideRef" (func $retain-release/receiveRef)) - (export "takeReturnRef" (func $retain-release/takeReturnRef)) - (export "provideReceiveRef" (func $retain-release/receiveRef)) - (export "newRef" (func $retain-release/newRef)) - (export "assignGlobal" (func $retain-release/receiveRef)) - (export "assignField" (func $retain-release/assignField)) - (export "scopeBlock" (func $retain-release/receiveRef)) - (export "scopeBlockToUninitialized" (func $retain-release/receiveRef)) - (export "scopeBlockToInitialized" (func $retain-release/receiveRef)) - (export "scopeBlockToConditional" (func $retain-release/takeRef)) - (export "scopeTopLevelUninitialized" (func $retain-release/receiveRef)) - (export "scopeTopLevelInitialized" (func $retain-release/receiveRef)) - (export "scopeTopLevelConditional" (func $retain-release/takeRef)) - (export "scopeIf" (func $retain-release/takeRef)) - (export "scopeIfElse" (func $retain-release/takeRef)) - (export "scopeWhile" (func $retain-release/takeRef)) - (export "scopeDo" (func $retain-release/takeRef)) - (export "scopeFor" (func $retain-release/takeRef)) - (export "scopeForComplex" (func $retain-release/scopeForComplex)) - (export "scopeBreak" (func $retain-release/takeRef)) - (export "scopeBreakNested" (func $retain-release/takeRef)) - (export "scopeContinue" (func $retain-release/takeRef)) - (export "scopeContinueNested" (func $retain-release/takeRef)) - (export "scopeThrow" (func $retain-release/scopeThrow)) - (export "scopeUnreachable" (func $retain-release/scopeUnreachable)) - (export "callInline" (func $retain-release/receiveRef)) - (export "provideRefInline" (func $retain-release/receiveRef)) - (export "receiveRefInline" (func $retain-release/receiveRef)) - (export "receiveRefInlineDrop" (func $retain-release/receiveRef)) - (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) - (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) - (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) - (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 - unreachable - end - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $7 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $3 - local.get $5 - i32.lt_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 - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $4 - i32.const 16 - i32.add - ) - (func $retain-release/returnRef (result i32) - global.get $retain-release/REF - ) - (func $retain-release/receiveRef - nop - ) - (func $retain-release/takeRef (param $0 i32) - nop - ) - (func $retain-release/takeReturnRef (param $0 i32) (result i32) - local.get $0 - ) - (func $retain-release/newRef - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - drop - ) - (func $retain-release/assignField - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $retain-release/TARGET - local.tee $0 - global.get $retain-release/REF - local.tee $2 - local.get $0 - i32.load - i32.ne - drop - local.get $2 - i32.store - ) - (func $retain-release/scopeForComplex (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $0 - if - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $retain-release/scopeThrow (param $0 i32) - local.get $0 - if - i32.const 1056 - i32.const 1088 - i32.const 367 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $retain-release/scopeUnreachable (param $0 i32) - local.get $0 - if - unreachable - end - ) - (func $retain-release/provideRefIndirect (param $0 i32) - global.get $retain-release/REF - local.get $0 - i32.load - call_indirect (type $i32_=>_none) - ) - (func $retain-release/receiveRefIndirect (param $0 i32) - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - drop - ) - (func $~start - (local $0 i32) - global.get $~started - if - return - end - i32.const 1 - global.set $~started - i32.const 1132 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - global.set $retain-release/REF - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__new - local.tee $0 - i32.const 0 - i32.store - local.get $0 - global.set $retain-release/TARGET - ) -) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat deleted file mode 100644 index 3c30d43f74..0000000000 --- a/tests/compiler/retain-release.untouched.wat +++ /dev/null @@ -1,858 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") - (data (i32.const 44) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $retain-release/REF (mut i32) (i32.const 0)) - (global $retain-release/glo (mut i32) (i32.const 0)) - (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 108)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "returnRef" (func $retain-release/returnRef)) - (export "receiveRef" (func $retain-release/receiveRef)) - (export "receiveRefDrop" (func $retain-release/receiveRefDrop)) - (export "receiveRefRetain" (func $retain-release/receiveRefRetain)) - (export "takeRef" (func $retain-release/takeRef)) - (export "provideRef" (func $retain-release/provideRef)) - (export "takeReturnRef" (func $retain-release/takeReturnRef)) - (export "provideReceiveRef" (func $retain-release/provideReceiveRef)) - (export "newRef" (func $retain-release/newRef)) - (export "assignGlobal" (func $retain-release/assignGlobal)) - (export "assignField" (func $retain-release/assignField)) - (export "scopeBlock" (func $retain-release/scopeBlock)) - (export "scopeBlockToUninitialized" (func $retain-release/scopeBlockToUninitialized)) - (export "scopeBlockToInitialized" (func $retain-release/scopeBlockToInitialized)) - (export "scopeBlockToConditional" (func $retain-release/scopeBlockToConditional)) - (export "scopeTopLevelUninitialized" (func $retain-release/scopeTopLevelUninitialized)) - (export "scopeTopLevelInitialized" (func $retain-release/scopeTopLevelInitialized)) - (export "scopeTopLevelConditional" (func $retain-release/scopeTopLevelConditional)) - (export "scopeIf" (func $retain-release/scopeIf)) - (export "scopeIfElse" (func $retain-release/scopeIfElse)) - (export "scopeWhile" (func $retain-release/scopeWhile)) - (export "scopeDo" (func $retain-release/scopeDo)) - (export "scopeFor" (func $retain-release/scopeFor)) - (export "scopeForComplex" (func $retain-release/scopeForComplex)) - (export "scopeBreak" (func $retain-release/scopeBreak)) - (export "scopeBreakNested" (func $retain-release/scopeBreakNested)) - (export "scopeContinue" (func $retain-release/scopeContinue)) - (export "scopeContinueNested" (func $retain-release/scopeContinueNested)) - (export "scopeThrow" (func $retain-release/scopeThrow)) - (export "scopeUnreachable" (func $retain-release/scopeUnreachable)) - (export "callInline" (func $retain-release/callInline)) - (export "provideRefInline" (func $retain-release/provideRefInline)) - (export "receiveRefInline" (func $retain-release/receiveRefInline)) - (export "receiveRefInlineDrop" (func $retain-release/receiveRefInlineDrop)) - (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) - (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) - (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop)) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) - local.get $0 - 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 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - 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 $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $2 - local.get $0 - call $~lib/rt/stub/computeSize - local.set $3 - local.get $2 - local.get $3 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $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/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $retain-release/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $retain-release/Target#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $start:retain-release - 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 $retain-release/Ref#constructor - global.set $retain-release/REF - i32.const 0 - call $retain-release/Target#constructor - global.set $retain-release/TARGET - ) - (func $retain-release/returnRef (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $retain-release/receiveRef - (local $0 i32) - call $retain-release/returnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefDrop - call $retain-release/returnRef - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefRetain - (local $0 i32) - call $retain-release/returnRef - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/takeRef (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRef - global.get $retain-release/REF - call $retain-release/takeRef - ) - (func $retain-release/takeReturnRef (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $retain-release/provideReceiveRef - (local $0 i32) - global.get $retain-release/REF - call $retain-release/takeReturnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/newRef - i32.const 0 - call $retain-release/Ref#constructor - call $~lib/rt/stub/__release - ) - (func $retain-release/assignGlobal - (local $0 i32) - (local $1 i32) - global.get $retain-release/REF - local.tee $0 - global.get $retain-release/glo - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - global.set $retain-release/glo - ) - (func $retain-release/assignField - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $retain-release/TARGET - local.tee $0 - global.get $retain-release/REF - local.tee $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - end - local.get $1 - i32.store - ) - (func $retain-release/scopeBlock - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToUninitialized - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToInitialized - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToConditional (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelUninitialized - (local $0 i32) - i32.const 0 - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelInitialized - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelConditional (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeIf (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeIfElse (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - else - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeWhile (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeDo (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $do-continue|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - local.set $2 - local.get $2 - br_if $do-continue|0 - end - ) - (func $retain-release/scopeFor (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $for-loop|0 - end - end - ) - (func $retain-release/scopeForComplex (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $0 - local.set $2 - local.get $2 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $0 - local.set $5 - local.get $5 - if - block $for-continue|1 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $6 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - br $for-continue|1 - end - local.get $6 - call $~lib/rt/stub/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) - (func $retain-release/scopeBreak (param $0 i32) - (local $1 i32) - (local $2 i32) - block $while-break|0 - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-break|0 - end - end - end - ) - (func $retain-release/scopeBreakNested (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - block $while-break|1 - loop $while-continue|1 - local.get $0 - local.set $3 - local.get $3 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - call $~lib/rt/stub/__release - br $while-break|1 - end - end - end - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeContinue (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeContinueNested (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - loop $while-continue|1 - local.get $0 - local.set $3 - local.get $3 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - call $~lib/rt/stub/__release - br $while-continue|1 - end - end - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeThrow (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - i32.const 32 - i32.const 64 - i32.const 367 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $retain-release/scopeUnreachable (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - unreachable - end - end - ) - (func $retain-release/callInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInlineDrop - global.get $retain-release/REF - call $~lib/rt/stub/__retain - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefIndirect (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - global.get $retain-release/REF - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $i32_=>_none) - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefIndirect (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - i32.eqz - drop - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefIndirectDrop (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:retain-release - ) -) diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat deleted file mode 100644 index 3a8c55d3f7..0000000000 --- a/tests/compiler/retain-return.optimized.wat +++ /dev/null @@ -1,1132 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1036) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\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 (i32.const 1100) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1164) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\05") - (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06") - (table $0 7 funcref) - (elem (i32.const 1) $retain-return/returnNew $start:retain-return~anonymous|1 $retain-return/returnGlobal $retain-return/returnNew $retain-return/returnNew $retain-return/returnGlobal) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $retain-return/ref (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741820 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 12 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=4 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=8 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const -2 - local.get $2 - i32.rotl - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $3 - 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 $7 i32) - (local $8 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 200 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 202 - 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 $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741820 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - 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 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 223 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 4 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741820 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741820 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 12 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 238 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 4 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 239 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 255 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - 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 $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $2 - i32.gt_u - if - i32.const 0 - i32.const 1184 - i32.const 380 - 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 $2 - i32.const -16 - i32.and - local.get $0 - i32.load offset=1568 - local.tee $2 - if - local.get $1 - local.get $2 - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 387 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $2 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 400 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.sub - local.tee $2 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - 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 $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 346 - 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) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 498 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 500 - 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.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - ) - (func $~lib/rt/pure/__new (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $1 - i32.const 1 - i32.lt_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 1424 - i32.const 0 - i32.store - i32.const 2992 - 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 1424 - 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 $1 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1424 - 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 1424 - i32.const 2996 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1424 - global.set $~lib/rt/tlsf/ROOT - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $1 - i32.const 4 - i32.sub - local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1420 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1120 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $retain-return/returnNew (result i32) - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1420 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $retain-return/returnGlobal (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|1 (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1120 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - local.get $0 - i32.const 12 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $~lib/arraybuffer/ArrayBufferView $__inlined_func$~lib/rt/__visit_members $folding-inner1 $folding-inner1 $invalid - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $0 - i32.load offset=24 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1120 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~start - (local $0 i32) - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $~lib/rt/pure/__new - drop - call $~lib/rt/pure/__new - drop - call $~lib/rt/pure/__new - drop - call $~lib/rt/pure/__new - drop - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - global.set $retain-return/ref - i32.const 1248 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1248 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1280 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1280 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - i32.const 1312 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1312 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1344 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1344 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1376 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1376 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1408 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1408 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $retain-return/ref - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1420 - i32.lt_u - if - return - end - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/return.untouched.wat b/tests/compiler/return.debug.wat similarity index 100% rename from tests/compiler/return.untouched.wat rename to tests/compiler/return.debug.wat diff --git a/tests/compiler/return.optimized.wat b/tests/compiler/return.release.wat similarity index 100% rename from tests/compiler/return.optimized.wat rename to tests/compiler/return.release.wat diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.debug.wat similarity index 91% rename from tests/compiler/rt/finalize.untouched.wat rename to tests/compiler/rt/finalize.debug.wat index 73c8adfcee..2d499c8170 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -24,8 +24,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 500)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) @@ -2086,237 +2085,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2366,7 +2134,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__collect diff --git a/tests/compiler/rt/finalize.json b/tests/compiler/rt/finalize.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/rt/finalize.json +++ b/tests/compiler/rt/finalize.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.release.wat similarity index 99% rename from tests/compiler/rt/finalize.optimized.wat rename to tests/compiler/rt/finalize.release.wat index 8233aacacd..c0fb7a3099 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -1286,11 +1286,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.debug.wat similarity index 100% rename from tests/compiler/rt/flags.untouched.wat rename to tests/compiler/rt/flags.debug.wat diff --git a/tests/compiler/rt/flags.json b/tests/compiler/rt/flags.json index 452f164780..1bdd02b1be 100644 --- a/tests/compiler/rt/flags.json +++ b/tests/compiler/rt/flags.json @@ -1,7 +1,4 @@ { - "features": [ - "simd" - ], "asc_flags": [ ] } diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.release.wat similarity index 100% rename from tests/compiler/rt/flags.optimized.wat rename to tests/compiler/rt/flags.release.wat diff --git a/tests/compiler/rt/ids.untouched.wat b/tests/compiler/rt/ids.debug.wat similarity index 100% rename from tests/compiler/rt/ids.untouched.wat rename to tests/compiler/rt/ids.debug.wat diff --git a/tests/compiler/rt/runtime-incremental.optimized.wat b/tests/compiler/rt/ids.release.wat similarity index 100% rename from tests/compiler/rt/runtime-incremental.optimized.wat rename to tests/compiler/rt/ids.release.wat diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.debug.wat similarity index 93% rename from tests/compiler/rt/instanceof.untouched.wat rename to tests/compiler/rt/instanceof.debug.wat index edb3157a87..f9d6d6bcc6 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.debug.wat @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $rt/instanceof/animal (mut i32) (i32.const 0)) (global $rt/instanceof/cat (mut i32) (i32.const 0)) (global $rt/instanceof/blackcat (mut i32) (i32.const 0)) @@ -2073,237 +2072,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2353,7 +2121,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/rt/instanceof.json b/tests/compiler/rt/instanceof.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/rt/instanceof.json +++ b/tests/compiler/rt/instanceof.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.release.wat similarity index 99% rename from tests/compiler/rt/instanceof.optimized.wat rename to tests/compiler/rt/instanceof.release.wat index 119ffdb6b3..aac5c067e5 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.release.wat @@ -1262,6 +1262,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $start:rt/instanceof (local $0 i32) diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/rt/runtime-incremental-export.debug.wat similarity index 91% rename from tests/compiler/empty-exportruntime.untouched.wat rename to tests/compiler/rt/runtime-incremental-export.debug.wat index bcf84011f0..6b98a6fe6a 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 572)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16956)) @@ -2069,237 +2068,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2349,7 +2117,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/rt/runtime-incremental-export.release.wat similarity index 90% rename from tests/compiler/empty-exportruntime.optimized.wat rename to tests/compiler/rt/runtime-incremental-export.release.wat index fe98d1636f..d1611e10a5 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -1275,7 +1275,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1290,7 +1290,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1303,7 +1303,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1311,7 +1311,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1322,16 +1322,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1342,16 +1342,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1359,7 +1359,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1367,8 +1367,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1385,7 +1385,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1395,13 +1395,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1414,40 +1414,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1507,182 +1507,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/rt/runtime-incremental.debug.wat similarity index 60% rename from tests/compiler/std/simd.untouched.wat rename to tests/compiler/rt/runtime-incremental.debug.wat index 196aa636d5..f4d95ad56d 100644 --- a/tests/compiler/std/simd.untouched.wat +++ b/tests/compiler/rt/runtime-incremental.debug.wat @@ -1,6 +1,4 @@ (module - (type $none_=>_none (func)) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) @@ -8,12 +6,4 @@ (table $0 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) - (start $~start) - (func $start:std/simd - i32.const 0 - drop - ) - (func $~start - call $start:std/simd - ) ) diff --git a/tests/compiler/rt/runtime-minimal.optimized.wat b/tests/compiler/rt/runtime-incremental.release.wat similarity index 100% rename from tests/compiler/rt/runtime-minimal.optimized.wat rename to tests/compiler/rt/runtime-incremental.release.wat diff --git a/tests/compiler/rt/runtime-minimal-export.untouched.wat b/tests/compiler/rt/runtime-minimal-export.debug.wat similarity index 99% rename from tests/compiler/rt/runtime-minimal-export.untouched.wat rename to tests/compiler/rt/runtime-minimal-export.debug.wat index 4a4b8da36f..fdf07f6b5e 100644 --- a/tests/compiler/rt/runtime-minimal-export.untouched.wat +++ b/tests/compiler/rt/runtime-minimal-export.debug.wat @@ -9,7 +9,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT 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)) (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.release.wat similarity index 100% rename from tests/compiler/rt/runtime-minimal-export.optimized.wat rename to tests/compiler/rt/runtime-minimal-export.release.wat diff --git a/tests/compiler/rt/runtime-minimal.untouched.wat b/tests/compiler/rt/runtime-minimal.debug.wat similarity index 100% rename from tests/compiler/rt/runtime-minimal.untouched.wat rename to tests/compiler/rt/runtime-minimal.debug.wat diff --git a/tests/compiler/rt/runtime-stub.optimized.wat b/tests/compiler/rt/runtime-minimal.release.wat similarity index 100% rename from tests/compiler/rt/runtime-stub.optimized.wat rename to tests/compiler/rt/runtime-minimal.release.wat diff --git a/tests/compiler/rt/runtime-stub-export.untouched.wat b/tests/compiler/rt/runtime-stub-export.debug.wat similarity index 100% rename from tests/compiler/rt/runtime-stub-export.untouched.wat rename to tests/compiler/rt/runtime-stub-export.debug.wat diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.release.wat similarity index 100% rename from tests/compiler/rt/runtime-stub-export.optimized.wat rename to tests/compiler/rt/runtime-stub-export.release.wat diff --git a/tests/compiler/rt/runtime-stub.untouched.wat b/tests/compiler/rt/runtime-stub.debug.wat similarity index 100% rename from tests/compiler/rt/runtime-stub.untouched.wat rename to tests/compiler/rt/runtime-stub.debug.wat diff --git a/tests/compiler/std/simd.optimized.wat b/tests/compiler/rt/runtime-stub.release.wat similarity index 100% rename from tests/compiler/std/simd.optimized.wat rename to tests/compiler/rt/runtime-stub.release.wat diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat deleted file mode 100644 index baf7db82b6..0000000000 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ /dev/null @@ -1,607 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1036) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data (i32.const 1100) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s") - (data (i32.const 1168) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1168)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/stub/__new)) - (export "__renew" (func $~lib/rt/stub/__renew)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $2 - local.get $0 - call $~lib/rt/stub/computeSize - local.tee $0 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $0 - i32.store - local.get $2 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $4 - i32.load - local.tee $3 - i32.add - i32.eq - local.set $5 - local.get $1 - call $~lib/rt/stub/computeSize - local.set $2 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $5 - if - local.get $1 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $4 - local.get $2 - i32.store - else - local.get $2 - local.get $3 - i32.const 1 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - local.set $0 - end - else - local.get $5 - if - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $4 - local.get $2 - i32.store - end - end - local.get $0 - ) - (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/stub/__realloc - local.tee $0 - i32.const 4 - i32.sub - local.get $1 - i32.store offset=16 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $start:rt/stub-realloc - (local $0 i32) - i32.const 10 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.set $rt/stub-realloc/originalPtr - global.get $rt/stub-realloc/ptr - i32.const 12 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 13 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 20 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - i32.const 1 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/originalPtr - i32.const 32 - i32.add - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 24 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 28 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 29 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.le_u - if - i32.const 0 - i32.const 1120 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - local.tee $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - i32.const 1 - call $~lib/rt/stub/__alloc - global.get $rt/stub-realloc/ptr - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - i32.const 1196 - global.set $~lib/rt/stub/startOffset - i32.const 1196 - global.set $~lib/rt/stub/offset - call $start:rt/stub-realloc - ) -) diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat deleted file mode 100644 index a03c5eb08d..0000000000 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ /dev/null @@ -1,1758 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "<\00\00\00\01\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 144) "\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") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 144)) - (global $~lib/memory/__heap_base i32 (i32.const 172)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/stub/__new)) - (export "__renew" (func $~lib/rt/stub/__renew)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) - local.get $0 - 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 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - 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 $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $2 - local.get $0 - call $~lib/rt/stub/computeSize - local.set $3 - local.get $2 - local.get $3 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $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/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset - i32.eq - local.set $4 - local.get $1 - call $~lib/rt/stub/computeSize - local.set $5 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $4 - if - local.get $1 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - local.get $5 - i32.store - else - local.get $5 - local.tee $6 - local.get $3 - i32.const 1 - i32.shl - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - call $~lib/rt/stub/__alloc - local.set $6 - local.get $6 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $6 - local.tee $0 - i32.const 4 - i32.sub - local.set $2 - end - else - local.get $4 - if - local.get $0 - local.get $5 - i32.add - global.set $~lib/rt/stub/offset - local.get $2 - local.get $5 - i32.store - end - end - local.get $0 - ) - (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.sub - i32.const 16 - local.get $1 - i32.add - call $~lib/rt/stub/__realloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.get $1 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $start:rt/stub-realloc - i32.const 10 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.set $rt/stub-realloc/originalPtr - global.get $rt/stub-realloc/ptr - i32.const 12 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 13 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 20 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - i32.const 1 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/originalPtr - i32.const 28 - i32.add - i32.const 4 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 24 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 28 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 29 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - call $~lib/rt/stub/__free - i32.const 1 - call $~lib/rt/stub/__alloc - global.get $rt/stub-realloc/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - 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 - call $start:rt/stub-realloc - ) -) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.debug.wat similarity index 100% rename from tests/compiler/scoped.untouched.wat rename to tests/compiler/scoped.debug.wat diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.release.wat similarity index 100% rename from tests/compiler/scoped.optimized.wat rename to tests/compiler/scoped.release.wat diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/simd.debug.wat similarity index 98% rename from tests/compiler/features/simd.untouched.wat rename to tests/compiler/simd.debug.wat index 29a3b2e40d..d226d7e47d 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/simd.debug.wat @@ -9,21 +9,21 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_v128 (func (result v128))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 1)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/memory/__data_end i32 (i32.const 204)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16588)) - (global $~lib/memory/__heap_base i32 (i32.const 16588)) + (global $~lib/memory/__data_end i32 (i32.const 188)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) + (global $~lib/memory/__heap_base i32 (i32.const 16572)) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 140) ",\00\00\00\00\00\00\00\00\00\00\00\01\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") (table $0 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -1457,7 +1457,7 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $features/simd/test_v128 + (func $simd/test_v128 (local $0 i32) v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 v128.any_true @@ -1652,7 +1652,7 @@ i32.store local.get $0 v128.load32_zero - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x0000002a + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true i32.const 0 @@ -1676,7 +1676,7 @@ i64.store local.get $0 v128.load64_zero - v128.const i32x4 0x00000000 0x00000000 0x0000002a 0x00000000 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true i32.const 0 @@ -1693,7 +1693,7 @@ local.get $0 call $~lib/rt/tlsf/__free ) - (func $features/simd/test_i8x16 + (func $simd/test_i8x16 (local $0 v128) (local $1 v128) (local $2 v128) @@ -2254,7 +2254,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $7 i8x16.popcnt v128.const i32x4 0x02010100 0x03020201 0x03020201 0x04030302 i8x16.eq @@ -2265,13 +2265,13 @@ if i32.const 0 i32.const 160 - i32.const 263 - i32.const 3 + i32.const 262 + i32.const 5 call $~lib/builtins/abort unreachable end ) - (func $features/simd/test_i16x8 + (func $simd/test_i16x8 (local $0 v128) (local $1 v128) (local $2 v128) @@ -2919,20 +2919,12 @@ v128.const i32x4 0xc001ffff 0xffff7ffd 0xffff8000 0x8000bfff v128.const i32x4 0xc000ffff 0x80000001 0x00018000 0xfff6c000 i16x8.q15mulr_sat_s - v128.const i32x4 0x20000000 0x00010001 0x00007fff 0x00012001 + v128.const i32x4 0x20000000 0x00010001 0x00007fff 0x000a2001 i8x16.eq i8x16.all_true i32.const 0 i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 404 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop local.get $0 i16x8.extadd_pairwise_i8x16_s drop @@ -2956,7 +2948,7 @@ i16x8.extmul_high_i8x16_u drop ) - (func $features/simd/test_i32x4 + (func $simd/test_i32x4 (local $0 v128) (local $1 v128) (local $2 v128) @@ -3553,7 +3545,7 @@ i32x4.extmul_high_i16x8_u drop ) - (func $features/simd/test_i64x2 + (func $simd/test_i64x2 (local $0 v128) (local $1 v128) (local $2 v128) @@ -3830,7 +3822,7 @@ i64x2.extmul_high_i32x4_u drop ) - (func $features/simd/test_f32x4 + (func $simd/test_f32x4 (local $0 v128) (local $1 v128) (local $2 v128) @@ -4239,7 +4231,7 @@ f32x4.demote_f64x2_zero drop ) - (func $features/simd/test_f64x2 + (func $simd/test_f64x2 (local $0 v128) (local $1 v128) (local $2 v128) @@ -4634,26 +4626,26 @@ f64x2.promote_low_f32x4 drop ) - (func $features/simd/test_const (result v128) + (func $simd/test_const (result v128) (local $0 v128) v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 local.set $0 local.get $0 ) - (func $start:features/simd + (func $start:simd i32.const 1 drop - call $features/simd/test_v128 - call $features/simd/test_i8x16 - call $features/simd/test_i16x8 - call $features/simd/test_i32x4 - call $features/simd/test_i64x2 - call $features/simd/test_f32x4 - call $features/simd/test_f64x2 - call $features/simd/test_const + call $simd/test_v128 + call $simd/test_i8x16 + call $simd/test_i16x8 + call $simd/test_i32x4 + call $simd/test_i64x2 + call $simd/test_f32x4 + call $simd/test_f64x2 + call $simd/test_const drop ) (func $~start - call $start:features/simd + call $start:simd ) ) diff --git a/tests/compiler/simd.json b/tests/compiler/simd.json new file mode 100644 index 0000000000..0a393fd610 --- /dev/null +++ b/tests/compiler/simd.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--enable", "simd" + ] +} diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/simd.release.wat similarity index 83% rename from tests/compiler/features/simd.optimized.wat rename to tests/compiler/simd.release.wat index b6c1057cda..d017cdf643 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/simd.release.wat @@ -12,8 +12,8 @@ (data (i32.const 1048) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1100) "<") (data (i32.const 1112) "\01\00\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 (i32.const 1164) "<") - (data (i32.const 1176) "\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") + (data (i32.const 1164) ",") + (data (i32.const 1176) "\01\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -547,10 +547,10 @@ if unreachable end - i32.const 17616 + i32.const 17600 i32.const 0 i32.store - i32.const 19184 + i32.const 19168 i32.const 0 i32.store loop $for-loop|0 @@ -561,7 +561,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 17616 + i32.const 17600 i32.add i32.const 0 i32.store offset=4 @@ -579,7 +579,7 @@ i32.add i32.const 2 i32.shl - i32.const 17616 + i32.const 17600 i32.add i32.const 0 i32.store offset=96 @@ -597,13 +597,13 @@ br $for-loop|0 end end - i32.const 17616 - i32.const 19188 + i32.const 17600 + i32.const 19172 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 17616 + i32.const 17600 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -857,7 +857,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -871,17 +871,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -892,19 +892,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -929,7 +929,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 17612 + i32.const 17596 i32.lt_u if return @@ -1124,7 +1124,7 @@ i32.store local.get $0 v128.load32_zero - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x0000002a + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true i32.eqz @@ -1153,7 +1153,7 @@ i64.store local.get $0 v128.load64_zero - v128.const i32x4 0x00000000 0x00000000 0x0000002a 0x00000000 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true i32.eqz @@ -1167,11 +1167,167 @@ end local.get $0 call $~lib/rt/tlsf/__free - i32.const 0 - i32.const 1184 - i32.const 263 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 2 + i32.store8 offset=1 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store8 offset=2 + local.get $0 + i32.const 4 + i32.store8 offset=3 + local.get $0 + i32.const 5 + i32.store8 offset=4 + local.get $0 + i32.const 6 + i32.store8 offset=5 + local.get $0 + i32.const 7 + i32.store8 offset=6 + local.get $0 + i32.const 255 + i32.store8 offset=7 + local.get $0 + v128.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 392 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store16 + local.get $0 + i32.const 2 + i32.store16 offset=2 + local.get $0 + i32.const 3 + i32.store16 offset=4 + local.get $0 + i32.const 65535 + i32.store16 offset=6 + local.get $0 + v128.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 523 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 528 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + v128.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 582 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 587 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free ) ) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/simd.ts similarity index 98% rename from tests/compiler/features/simd.ts rename to tests/compiler/simd.ts index 432c715838..7abe0e8c82 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/simd.ts @@ -107,7 +107,7 @@ function test_v128(): void { assert( v128.load32_zero(ptr) == - v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0) + v128(42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ); __free(ptr); } @@ -117,7 +117,7 @@ function test_v128(): void { assert( v128.load64_zero(ptr) == - v128(0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) + v128(42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ); __free(ptr); } @@ -259,8 +259,8 @@ function test_i8x16(): void { == v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) ); + assert(i8x16.popcnt(a) == v128(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4)); } - assert(i8x16.popcnt(a) == v128(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4)); } function test_i16x8(): void { @@ -404,7 +404,7 @@ function test_i16x8(): void { assert(i16x8.q15mulr_sat_s( i16x8(-1, -16383, 32765, 65535, -32768, 65535, -16385, -32768), i16x8(-1, -16384, 1, -32768, -32768, 1, -16384, -10) - ) == i16x8(0, 8192, 1, 1, 32767, 0, 8193, 1)); + ) == i16x8(0, 8192, 1, 1, 32767, 0, 8193, 10)); // TODO: unimp in Binaryen's interpreter i16x8.extadd_pairwise_i8x16_s(a); diff --git a/tests/compiler/simd.untouched.wat b/tests/compiler/simd.untouched.wat deleted file mode 100644 index ed2aec3b8e..0000000000 --- a/tests/compiler/simd.untouched.wat +++ /dev/null @@ -1,2083 +0,0 @@ -(module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) - (export "memory" (memory $0)) - (start $start) - (func $simd/test_v128 (; 1 ;) (type $FUNCSIG$v) - nop - ) - (func $simd/test_i8x16 (; 2 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - local.set $0 - local.get $0 - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i8x16.splat - local.set $1 - local.get $1 - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 62 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i8x16.add - local.set $2 - local.get $2 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x80100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 64 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 65 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 66 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i8x16.neg - v128.const i32x4 0xfcfdfeff 0xf8f9fafb 0xf4f5f6f7 0x81f1f2f3 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 67 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 72 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 15 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 73 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_u 15 - i32.const 255 - i32.and - i32.const 128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 17 - i8x16.replace_lane 15 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x11100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 75 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x04030201 0x08070605 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 80 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i8x16.splat - i32.const 1 - i8x16.replace_lane 0 - local.set $3 - i32.const 0 - i8x16.splat - i32.const -1 - i8x16.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i8x16.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 118 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 119 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 120 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 121 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 122 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 123 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 124 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 125 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 126 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 127 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i16x8 (; 3 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - local.set $0 - local.get $0 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 132 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i16x8.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 134 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i16x8.add - local.set $2 - local.get $2 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x80000008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 136 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 137 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 138 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i16x8.neg - v128.const i32x4 0xfffeffff 0xfffcfffd 0xfffafffb 0x8001fff9 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 139 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 144 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 145 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_u 7 - i32.const 65535 - i32.and - i32.const 32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 146 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i16x8.replace_lane 7 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x00090008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 147 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00020001 0x00040003 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 152 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i16x8.splat - i32.const 1 - i16x8.replace_lane 0 - local.set $3 - i32.const 0 - i16x8.splat - i32.const -1 - i16x8.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i16x8.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 190 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 191 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 192 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 193 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 194 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 195 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 196 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 197 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 198 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 199 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i32x4 (; 4 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 204 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 206 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 208 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 209 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 210 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32x4.neg - v128.const i32x4 0xffffffff 0xfffffffe 0xfffffffd 0x80000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 211 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 0 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 216 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 3 - i32.const -2147483648 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 217 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 5 - i32x4.replace_lane 3 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 218 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 223 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32x4.splat - i32.const 1 - i32x4.replace_lane 0 - local.set $3 - i32.const 0 - i32x4.splat - i32.const -1 - i32x4.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i32x4.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 237 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 238 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 239 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 240 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 241 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 242 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 243 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 244 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 245 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 246 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i64x2 (; 5 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 261 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 263 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000000 0x00000000 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 265 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 266 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64x2.neg - v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 267 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 0 - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 272 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 1 - i64.const -9223372036854775808 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 273 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 3 - i64x2.replace_lane 1 - v128.const i32x4 0x00000002 0x00000000 0x00000003 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 274 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 279 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_f32x4 (; 6 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - local.set $0 - local.get $0 - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 303 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 305 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40b00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 307 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 308 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 309 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f32x4.mul - local.set $3 - local.get $3 - local.get $0 - f32x4.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 311 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f32x4.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 312 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32x4.neg - v128.const i32x4 0xbfc00000 0xc0200000 0xc0600000 0xc0900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 313 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 0 - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 314 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 3 - f32.const 5.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 315 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32.const 6.5 - f32x4.replace_lane 3 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40d00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 316 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x3fc00000 0x40200000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 321 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32x4.splat - f32.const 1 - f32x4.replace_lane 0 - local.set $4 - f32.const 0 - f32x4.splat - f32.const -1 - f32x4.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0x00000000 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0xffffffff 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f32x4.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 330 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 331 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 332 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 333 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 334 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 337 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f32x4.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_f64x2 (; 7 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - local.set $0 - local.get $0 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 354 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 356 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x400c0000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 358 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 359 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 360 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f64x2.mul - local.set $3 - local.get $3 - local.get $0 - f64x2.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 362 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f64x2.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64x2.neg - v128.const i32x4 0x00000000 0xbff80000 0x00000000 0xc0040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 364 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 0 - f64.const 2.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 1 - f64.const 3.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 366 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64.const 4.5 - f64x2.replace_lane 1 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x40120000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 367 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 372 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64x2.splat - f64.const 1 - f64x2.replace_lane 0 - local.set $4 - f64.const 0 - f64x2.splat - f64.const -1 - f64x2.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f64x2.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 381 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 382 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 383 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 385 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 386 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 387 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 388 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f64x2.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 389 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_v8x16 (; 8 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c - local.set $0 - v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c - local.set $1 - local.get $0 - local.get $1 - v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 - v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:simd (; 9 ;) (type $FUNCSIG$v) - call $simd/test_v128 - call $simd/test_i8x16 - call $simd/test_i16x8 - call $simd/test_i32x4 - call $simd/test_i64x2 - call $simd/test_f32x4 - call $simd/test_f64x2 - call $simd/test_v8x16 - ) - (func $start (; 10 ;) (type $FUNCSIG$v) - call $start:simd - ) - (func $null (; 11 ;) (type $FUNCSIG$v) - ) -) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.debug.wat similarity index 100% rename from tests/compiler/static-this.untouched.wat rename to tests/compiler/static-this.debug.wat diff --git a/tests/compiler/static-this.optimized.wat b/tests/compiler/static-this.release.wat similarity index 100% rename from tests/compiler/static-this.optimized.wat rename to tests/compiler/static-this.release.wat diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.debug.wat similarity index 97% rename from tests/compiler/std-wasi/console.untouched.wat rename to tests/compiler/std-wasi/console.debug.wat index 3886345944..7aa8c6187a 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.debug.wat @@ -27,9 +27,10 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/bindings/wasi/tempbuf i32 (i32.const 112)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/process/process.stdout i32 (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -40,8 +41,7 @@ (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/console/timers (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 6912)) @@ -195,6 +195,159 @@ local.get $1 i32.store ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -234,6 +387,16 @@ i32.const 1 i32.add local.set $6 + local.get $3 + local.get $8 + i32.eqz + i32.and + if + local.get $6 + local.get $2 + i32.sub + return + end else local.get $8 i32.const 2048 @@ -367,7 +530,7 @@ if i32.const 160 i32.const 224 - i32.const 739 + i32.const 741 i32.const 49 call $~lib/wasi/index/abort unreachable @@ -538,7 +701,7 @@ local.set $4 local.get $0 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $0 @@ -562,7 +725,7 @@ local.set $4 local.get $1 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $1 @@ -2966,7 +3129,7 @@ local.get $7 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3248 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -2995,7 +3158,7 @@ if i32.const 0 i32.const 3248 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable @@ -3025,7 +3188,7 @@ local.get $10 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3248 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -3629,322 +3792,91 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 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 3376 + i32.const 3968 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3968 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 3376 - i32.const 3968 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3968 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub + i32.const 20 + i32.sub local.set $4 local.get $4 call $~lib/rt/itcms/Object#get:color @@ -4272,153 +4204,6 @@ end return ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - 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 $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) (func $~lib/map/Map<~lib/string/String,u64>#has (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -4431,6 +4216,8 @@ (func $~lib/process/process.hrtime (result i64) (local $0 i32) i32.const 1 + drop + i32.const 1 i64.const 0 global.get $~lib/bindings/wasi/tempbuf call $~lib/bindings/wasi_snapshot_preview1/clock_time_get @@ -4442,13 +4229,14 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3248 - i32.const 57 - i32.const 14 + i32.const 75 + i32.const 16 call $~lib/wasi/index/abort unreachable end global.get $~lib/bindings/wasi/tempbuf i64.load + return ) (func $~lib/map/MapEntry<~lib/string/String,u64>#set:value (param $0 i32) (param $1 i64) local.get $0 @@ -5412,6 +5200,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop local.get $0 i32.eqz if @@ -5453,6 +5243,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -5482,6 +5274,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -5519,6 +5313,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -5556,6 +5352,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -5593,6 +5391,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -5706,6 +5506,8 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 global.get $~lib/console/timers @@ -5841,6 +5643,8 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 global.get $~lib/console/timers @@ -5896,6 +5700,8 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 global.get $~lib/console/timers diff --git a/tests/compiler/std-wasi/console.json b/tests/compiler/std-wasi/console.json index cce2bd869a..b5784f1e69 100644 --- a/tests/compiler/std-wasi/console.json +++ b/tests/compiler/std-wasi/console.json @@ -1,13 +1,10 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ], "asc_wasi": { "args": [], "env": {}, "returnOnExit": true - }, - "features": [ - "bigint-integration" - ] + } } diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.release.wat similarity index 80% rename from tests/compiler/std-wasi/console.optimized.wat rename to tests/compiler/std-wasi/console.release.wat index 57aaddd0cc..ef22e2e656 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.release.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -30,255 +30,249 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 24356)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) "\1c") - (data (i32.const 1048) "\01\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s") - (data (i32.const 1068) "<") - (data (i32.const 1080) "\01\00\00\00$\00\00\00A\00s\00s\00e\00r\00t\00i\00o\00n\00 \00f\00a\00i\00l\00e\00d\00:\00 ") - (data (i32.const 1164) "<") - (data (i32.const 1176) "\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") - (data (i32.const 1228) ",") - (data (i32.const 1240) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1276) ",") - (data (i32.const 1288) "\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") - (data (i32.const 1324) "\1c") - (data (i32.const 1336) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") - (data (i32.const 1356) "\1c") - (data (i32.const 1368) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") - (data (i32.const 1388) ",") - (data (i32.const 1400) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") - (data (i32.const 1436) ",") - (data (i32.const 1448) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") - (data (i32.const 1484) ",") - (data (i32.const 1496) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 1532) "\1c") - (data (i32.const 1544) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") - (data (i32.const 1564) ",") - (data (i32.const 1576) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") - (data (i32.const 1612) "\1c") - (data (i32.const 1624) "\01\00\00\00\08\00\00\00B\00A\00D\00F") - (data (i32.const 1644) "\1c") - (data (i32.const 1656) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") - (data (i32.const 1676) "\1c") - (data (i32.const 1688) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") - (data (i32.const 1708) ",") - (data (i32.const 1720) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") - (data (i32.const 1788) ",") - (data (i32.const 1800) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") - (data (i32.const 1836) ",") - (data (i32.const 1848) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") - (data (i32.const 1884) ",") - (data (i32.const 1896) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") - (data (i32.const 1932) "\1c") - (data (i32.const 1944) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") - (data (i32.const 1964) ",") - (data (i32.const 1976) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\06\00\00\00D\00O\00M") - (data (i32.const 2044) "\1c") - (data (i32.const 2056) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") - (data (i32.const 2076) "\1c") - (data (i32.const 2088) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") - (data (i32.const 2108) "\1c") - (data (i32.const 2120) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") - (data (i32.const 2140) "\1c") - (data (i32.const 2152) "\01\00\00\00\08\00\00\00F\00B\00I\00G") - (data (i32.const 2172) ",") - (data (i32.const 2184) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 2220) "\1c") - (data (i32.const 2232) "\01\00\00\00\08\00\00\00I\00D\00R\00M") - (data (i32.const 2252) "\1c") - (data (i32.const 2264) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") - (data (i32.const 2284) ",") - (data (i32.const 2296) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") - (data (i32.const 2332) "\1c") - (data (i32.const 2344) "\01\00\00\00\08\00\00\00I\00N\00T\00R") - (data (i32.const 2364) "\1c") - (data (i32.const 2376) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") - (data (i32.const 2396) "\1c") - (data (i32.const 2408) "\01\00\00\00\04\00\00\00I\00O") - (data (i32.const 2428) "\1c") - (data (i32.const 2440) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") - (data (i32.const 2460) "\1c") - (data (i32.const 2472) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") - (data (i32.const 2492) "\1c") - (data (i32.const 2504) "\01\00\00\00\08\00\00\00L\00O\00O\00P") - (data (i32.const 2524) "\1c") - (data (i32.const 2536) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") - (data (i32.const 2556) "\1c") - (data (i32.const 2568) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") - (data (i32.const 2588) ",") - (data (i32.const 2600) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") - (data (i32.const 2636) ",") - (data (i32.const 2648) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") - (data (i32.const 2684) ",") - (data (i32.const 2696) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") - (data (i32.const 2732) ",") - (data (i32.const 2744) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") - (data (i32.const 2780) ",") - (data (i32.const 2792) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") - (data (i32.const 2828) ",") - (data (i32.const 2840) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 2876) "\1c") - (data (i32.const 2888) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") - (data (i32.const 2908) "\1c") - (data (i32.const 2920) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") - (data (i32.const 2940) "\1c") - (data (i32.const 2952) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") - (data (i32.const 2972) "\1c") - (data (i32.const 2984) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") - (data (i32.const 3004) "\1c") - (data (i32.const 3016) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") - (data (i32.const 3036) "\1c") - (data (i32.const 3048) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") - (data (i32.const 3068) "\1c") - (data (i32.const 3080) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") - (data (i32.const 3100) "\1c") - (data (i32.const 3112) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") - (data (i32.const 3132) "\1c") - (data (i32.const 3144) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") - (data (i32.const 3164) ",") - (data (i32.const 3176) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") - (data (i32.const 3212) "\1c") - (data (i32.const 3224) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") - (data (i32.const 3244) "\1c") - (data (i32.const 3256) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") - (data (i32.const 3276) ",") - (data (i32.const 3288) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") - (data (i32.const 3356) ",") - (data (i32.const 3368) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") - (data (i32.const 3404) ",") - (data (i32.const 3416) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") - (data (i32.const 3452) ",") - (data (i32.const 3464) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") - (data (i32.const 3500) "\1c") - (data (i32.const 3512) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") - (data (i32.const 3532) "\1c") - (data (i32.const 3544) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") - (data (i32.const 3564) "\1c") - (data (i32.const 3576) "\01\00\00\00\08\00\00\00N\00X\00I\00O") - (data (i32.const 3596) ",") - (data (i32.const 3608) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") - (data (i32.const 3644) ",") - (data (i32.const 3656) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") - (data (i32.const 3692) "\1c") - (data (i32.const 3704) "\01\00\00\00\08\00\00\00P\00E\00R\00M") - (data (i32.const 3724) "\1c") - (data (i32.const 3736) "\01\00\00\00\08\00\00\00P\00I\00P\00E") - (data (i32.const 3756) "\1c") - (data (i32.const 3768) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") - (data (i32.const 3788) ",") - (data (i32.const 3800) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 3836) ",") - (data (i32.const 3848) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") - (data (i32.const 3884) "\1c") - (data (i32.const 3896) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") - (data (i32.const 3916) "\1c") - (data (i32.const 3928) "\01\00\00\00\08\00\00\00R\00O\00F\00S") - (data (i32.const 3948) "\1c") - (data (i32.const 3960) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") - (data (i32.const 3980) "\1c") - (data (i32.const 3992) "\01\00\00\00\08\00\00\00S\00R\00C\00H") - (data (i32.const 4012) "\1c") - (data (i32.const 4024) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") - (data (i32.const 4044) ",") - (data (i32.const 4056) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") - (data (i32.const 4092) "\1c") - (data (i32.const 4104) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") - (data (i32.const 4124) "\1c") - (data (i32.const 4136) "\01\00\00\00\08\00\00\00X\00D\00E\00V") - (data (i32.const 4156) ",") - (data (i32.const 4168) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") - (data (i32.const 4204) ",") - (data (i32.const 4216) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") - (data (i32.const 4252) "<") - (data (i32.const 4264) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 4316) "<") - (data (i32.const 4328) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 4380) "<") - (data (i32.const 4392) "\01\00\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 (i32.const 4444) "\1c") - (data (i32.const 4456) "\01\00\00\00\02\00\00\00\n") - (data (i32.const 4476) "\1c") - (data (i32.const 4488) "\01\00\00\00\08\00\00\00p\00h\00e\00w") - (data (i32.const 4508) ",") - (data (i32.const 4520) "\01\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g") - (data (i32.const 4556) ",") - (data (i32.const 4568) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g") - (data (i32.const 4604) ",") - (data (i32.const 4616) "\01\00\00\00\0e\00\00\00D\00e\00b\00u\00g\00:\00 ") - (data (i32.const 4652) ",") - (data (i32.const 4664) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o") - (data (i32.const 4700) "\1c") - (data (i32.const 4712) "\01\00\00\00\0c\00\00\00I\00n\00f\00o\00:\00 ") - (data (i32.const 4732) ",") - (data (i32.const 4744) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n") - (data (i32.const 4780) ",") - (data (i32.const 4792) "\01\00\00\00\12\00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 ") - (data (i32.const 4828) ",") - (data (i32.const 4840) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r") - (data (i32.const 4876) ",") - (data (i32.const 4888) "\01\00\00\00\0e\00\00\00E\00r\00r\00o\00r\00:\00 ") - (data (i32.const 4924) ",") - (data (i32.const 4936) "\01\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l") - (data (i32.const 4972) "<") - (data (i32.const 4984) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 5100) "<") - (data (i32.const 5112) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 5164) ",") - (data (i32.const 5176) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 5244) ",") - (data (i32.const 5256) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 5292) "<") - (data (i32.const 5304) "\01\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 (i32.const 5356) "<") - (data (i32.const 5368) "\01\00\00\00 \00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 \00L\00a\00b\00e\00l\00 \00\'") - (data (i32.const 5420) "\\") - (data (i32.const 5432) "\01\00\00\00H\00\00\00\'\00 \00a\00l\00r\00e\00a\00d\00y\00 \00e\00x\00i\00s\00t\00s\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00(\00)\00\n") - (data (i32.const 5516) "L") - (data (i32.const 5528) "\01\00\00\000\00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 \00N\00o\00 \00s\00u\00c\00h\00 \00l\00a\00b\00e\00l\00 \00\'") - (data (i32.const 5596) "L") - (data (i32.const 5608) "\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00L\00o\00g\00(\00)\00\n") - (data (i32.const 5676) "<") - (data (i32.const 5688) "\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 5740) ",") - (data (i32.const 5752) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 5788) "|") - (data (i32.const 5800) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 5916) "<") - (data (i32.const 5928) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 5980) "\1c") - (data (i32.const 5992) "\01\00\00\00\02\00\00\000") + (data (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s") + (data (i32.const 1068) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00A\00s\00s\00e\00r\00t\00i\00o\00n\00 \00f\00a\00i\00l\00e\00d\00:\00 ") + (data (i32.const 1164) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") + (data (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 1788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 1836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 1884) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 1964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 2076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 2588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 2636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 2828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 3644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 3788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 3836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 3884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 3916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 4044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4252) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 4316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 4380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n") + (data (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00p\00h\00e\00w") + (data (i32.const 4508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g") + (data (i32.const 4556) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g") + (data (i32.const 4604) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00D\00e\00b\00u\00g\00:\00 ") + (data (i32.const 4652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o") + (data (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00I\00n\00f\00o\00:\00 ") + (data (i32.const 4732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n") + (data (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 ") + (data (i32.const 4828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r") + (data (i32.const 4876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00E\00r\00r\00o\00r\00:\00 ") + (data (i32.const 4924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l") + (data (i32.const 4972) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 5100) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 5244) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 5292) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 5356) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 \00L\00a\00b\00e\00l\00 \00\'") + (data (i32.const 5420) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\'\00 \00a\00l\00r\00e\00a\00d\00y\00 \00e\00x\00i\00s\00t\00s\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00(\00)\00\n") + (data (i32.const 5516) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 \00N\00o\00 \00s\00u\00c\00h\00 \00l\00a\00b\00e\00l\00 \00\'") + (data (i32.const 5596) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00L\00o\00g\00(\00)\00\n") + (data (i32.const 5676) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data (i32.const 5740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 5788) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 5916) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 6012) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 6412) "\1c\04") - (data (i32.const 6424) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 7468) "\\") - (data (i32.const 7480) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 7564) "\1c") - (data (i32.const 7576) "\01\00\00\00\04\00\00\00:\00 ") - (data (i32.const 7596) "\1c") - (data (i32.const 7608) "\01\00\00\00\06\00\00\00m\00s\00\n") - (data (i32.const 7628) "L") - (data (i32.const 7640) "\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00E\00n\00d\00(\00)\00\n") - (data (i32.const 7708) ",") - (data (i32.const 7720) "\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") - (data (i32.const 7756) ",") - (data (i32.const 7768) "\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") - (data (i32.const 7804) "\1c") - (data (i32.const 7816) "\01\00\00\00\02\00\00\001") - (data (i32.const 7836) "\1c") - (data (i32.const 7848) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 7868) "\1c") - (data (i32.const 7880) "\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 7900) "\1c") - (data (i32.const 7912) "\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 7936) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 7964) "\10\02\82") + (data (i32.const 6412) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 7468) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 7564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00:\00 ") + (data (i32.const 7596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00m\00s\00\n") + (data (i32.const 7628) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00E\00n\00d\00(\00)\00\n") + (data (i32.const 7708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") + (data (i32.const 7756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") + (data (i32.const 7804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 7836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002") + (data (i32.const 7868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004") + (data (i32.const 7936) "\04\00\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\02\82") (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl + loop $while-continue|1 + local.get $0 + local.tee $3 + 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 + 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 + local.get $3 + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -472,7 +466,11 @@ i64.const 9071471065260641 i64.store local.get $0 + i32.const 0 + call $~lib/string/String.__eq if (result i32) + i32.const 19 + else local.get $0 i32.const 20 i32.sub @@ -488,8 +486,6 @@ call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 19 i32.add - else - i32.const 19 end local.tee $0 i32.const 544106784 @@ -499,6 +495,9 @@ i32.add local.set $0 local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if local.get $1 i32.const 20 @@ -1842,7 +1841,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -1856,17 +1855,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -1877,19 +1876,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1983,14 +1982,14 @@ end local.get $1 i32.load16_u offset=6 - local.tee $4 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=4 - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 @@ -2020,11 +2019,11 @@ i32.shl local.get $6 i32.or - local.get $2 + local.get $4 i32.const 16 i32.shl i32.or - local.get $4 + local.get $2 i32.const 24 i32.shl i32.or @@ -2041,7 +2040,7 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4272 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -2050,28 +2049,27 @@ return end local.get $1 - local.tee $2 - local.tee $3 local.get $1 i32.const 20 i32.sub i32.load offset=16 + local.get $1 i32.add local.set $4 i32.const 0 - local.set $1 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $1 local.get $4 i32.lt_u if - local.get $3 + local.get $1 i32.load16_u local.tee $6 i32.const 128 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1 i32.add else @@ -2079,7 +2077,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 2 i32.add else @@ -2089,40 +2087,40 @@ i32.const 55296 i32.eq local.get $4 - local.get $3 + local.get $1 i32.const 2 i32.add i32.gt_u i32.and if - local.get $3 + local.get $1 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $1 - i32.const 4 - i32.add - local.set $1 local.get $3 i32.const 4 i32.add local.set $3 + local.get $1 + i32.const 4 + i32.add + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $3 i32.const 3 i32.add end end - local.set $1 - local.get $3 + local.set $3 + local.get $1 i32.const 2 i32.add - local.set $3 + local.set $1 br $while-continue|0 end end @@ -2132,32 +2130,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $3 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $2 local.get $5 - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $1 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $3 i32.ne if i32.const 0 i32.const 4272 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable end i32.const 1136 - local.get $3 + local.get $1 i32.store i32.const 1140 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 1136 @@ -2165,7 +2162,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $3 + local.get $1 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2174,7 +2171,7 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4272 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -2704,182 +2701,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) @@ -3087,8 +2913,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4272 - i32.const 57 - i32.const 14 + i32.const 75 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -3133,7 +2959,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3141,7 +2967,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $5 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -3149,28 +2975,28 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $7 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $7 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $7 i32.load offset=16 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $7 i32.load local.tee $8 i32.store offset=8 @@ -3178,7 +3004,7 @@ local.get $8 i32.store local.get $2 - local.get $5 + local.get $7 i64.load offset=8 i64.store offset=8 local.get $2 @@ -3188,7 +3014,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add local.tee $8 i32.load @@ -3201,20 +3027,20 @@ i32.add local.set $2 end - local.get $5 + local.get $7 i32.const 24 i32.add - local.set $5 + local.set $7 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $6 i32.store - local.get $4 + local.get $6 if local.get $0 - local.get $4 + local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -3232,7 +3058,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -4090,10 +3916,6 @@ ) (func $~lib/map/Map<~lib/string/String,u64>#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4122,145 +3944,39 @@ i32.shl i32.add i32.load - local.set $5 + local.set $0 loop $while-continue|0 - local.get $5 + local.get $0 if - local.get $5 + local.get $0 i32.load offset=16 - local.tee $6 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - block $__inlined_func$~lib/string/String.__eq (result i32) - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $2 - i32.store - i32.const 1 - local.get $1 - local.get $2 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - select - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $1 - local.set $3 - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $4 - i32.const 1 - i32.sub - local.set $0 - local.get $4 - if - local.get $2 - i32.load16_u - local.tee $4 - local.get $3 - i32.load16_u - local.tee $7 - i32.ne - if - local.get $4 - local.get $7 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - end - i32.eqz - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/string/String.__eq end if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $0 return end - local.get $6 + local.get $2 i32.const -2 i32.and - local.set $5 + local.set $0 br $while-continue|0 end end @@ -4322,7 +4038,7 @@ end global.get $~lib/memory/__stack_pointer global.get $~lib/console/timers - local.tee $4 + local.tee $2 i32.store call $~lib/process/process.hrtime local.set $1 @@ -4337,11 +4053,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $2 local.get $0 local.get $0 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $2 + local.tee $4 call $~lib/map/Map<~lib/string/String,u64>#find local.tee $3 if @@ -4349,16 +4065,16 @@ local.get $1 i64.store offset=8 else - local.get $4 + local.get $2 i32.load offset=16 - local.get $4 + local.get $2 i32.load offset=12 i32.eq if - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 - local.get $4 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -4366,10 +4082,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $2 i32.load offset=4 else - local.get $4 + local.get $2 i32.load offset=4 i32.const 1 i32.shl @@ -4379,12 +4095,12 @@ call $~lib/map/Map<~lib/string/String,u64>#rehash end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.load offset=8 local.tee $5 i32.store - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=16 local.tee $3 i32.const 1 @@ -4400,7 +4116,7 @@ i32.store local.get $0 if - local.get $4 + local.get $2 local.get $0 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link @@ -4408,18 +4124,18 @@ local.get $3 local.get $1 i64.store offset=8 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $3 - local.get $4 + local.get $2 i32.load - local.get $4 - i32.load offset=4 local.get $2 + i32.load offset=4 + local.get $4 i32.and i32.const 2 i32.shl diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.debug.wat similarity index 86% rename from tests/compiler/std-wasi/crypto.untouched.wat rename to tests/compiler/std-wasi/crypto.debug.wat index 7240af2f02..77695ee36d 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.debug.wat @@ -3,9 +3,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -19,6 +19,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.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 $~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)) @@ -30,9 +31,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $std-wasi/crypto/ab (mut i32) (i32.const 0)) (global $std-wasi/crypto/buf (mut i32) (i32.const 0)) (global $~lib/process/process.stdout i32 (i32.const 1)) @@ -169,6 +169,159 @@ i32.const 1 i32.shr_u ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -522,7 +675,7 @@ local.set $4 local.get $0 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $0 @@ -546,7 +699,7 @@ local.set $4 local.get $1 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $1 @@ -2680,368 +2833,137 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 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 256 + i32.const 320 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if local.get $0 - local.set $5 - local.get $1 + i32.const 20 + i32.sub local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 + local.get $2 if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray end end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 256 - i32.const 320 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + i32.load offset=4 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load + i32.load i32.sub ) (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) @@ -3673,6 +3595,8 @@ ) (func $~lib/crypto/crypto.getRandomValues (param $0 i32) (local $1 i32) + i32.const 1 + drop local.get $0 i32.load local.get $0 @@ -3689,8 +3613,8 @@ local.get $1 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3696 - i32.const 9 i32.const 14 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -3786,1591 +3710,338 @@ local.set $2 i32.const 4060 local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 4060 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 4480 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 4480 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-loop|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 5536 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 5536 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.load + local.set $11 local.get $0 - local.tee $5 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $0 - local.get $5 + local.get $11 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 4060 local.get $1 - local.tee $5 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.load + local.set $11 local.get $0 - local.tee $5 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + local.get $11 + i32.store + else + local.get $2 i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + local.set $11 local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + local.get $11 + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $2 + i32.const 2 + i32.ge_u + local.set $3 + local.get $3 + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 4480 + local.get $1 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i64.const 8 + i64.shr_u + local.set $1 + br $while-continue|0 + end end local.get $2 - i32.const 2 + i32.const 1 i32.and if local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + i32.const 4480 local.get $1 - local.tee $5 - i32.const 1 + i32.wrap_i64 + i32.const 6 + i32.shl i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.load16_u + i32.store16 end + ) + (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + local.get $1 + local.set $2 local.get $2 + i32.popcnt i32.const 1 - i32.and + i32.eq if + i32.const 63 local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 local.get $1 - local.tee $5 + i32.clz + i32.sub + i32.div_u i32.const 1 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + return + end + local.get $1 + i64.extend_i32_s + local.set $3 + local.get $3 + local.set $4 + i32.const 1 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i64.ge_u + local.set $2 + local.get $2 + if + local.get $0 + local.get $4 + i64.div_u + local.set $0 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $0 + i64.const 1 + i64.ge_u + local.set $2 + local.get $2 + if + local.get $0 + local.get $3 + i64.div_u + local.set $0 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 1 + i32.sub + ) + (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + local.get $3 + i64.extend_i32_s + local.set $4 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $3 + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $5 + local.get $4 + i64.const 1 + i64.sub + local.set $6 + loop $do-loop|0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 5536 + local.get $1 + local.get $6 + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $1 + local.get $5 + i64.shr_u + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + local.get $4 + i64.div_u + local.set $6 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 5536 + local.get $1 + local.get $6 + local.get $4 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $6 + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|1 + end end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 + i32.const 0 + local.set $2 + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.lt_u + if local.get $0 - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + return end + local.get $2 + local.set $3 + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $3 + local.get $1 + i32.const 255 + i32.and + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + i32.const 255 + i32.and + local.set $5 + local.get $3 + local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + local.get $3 ) (func $~lib/typedarray/Uint8Array#join (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -5619,7 +4290,7 @@ local.get $7 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 5696 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -5648,7 +4319,7 @@ if i32.const 0 i32.const 5696 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable @@ -5678,7 +4349,7 @@ local.get $10 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 5696 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -5903,6 +4574,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -6588,7 +5261,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer @@ -6713,7 +5386,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -6817,13 +5490,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer @@ -7043,7 +5716,7 @@ local.get $6 i32.const 0 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $9 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std-wasi/crypto.json b/tests/compiler/std-wasi/crypto.json index cce2bd869a..b5784f1e69 100644 --- a/tests/compiler/std-wasi/crypto.json +++ b/tests/compiler/std-wasi/crypto.json @@ -1,13 +1,10 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ], "asc_wasi": { "args": [], "env": {}, "returnOnExit": true - }, - "features": [ - "bigint-integration" - ] + } } diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.release.wat similarity index 72% rename from tests/compiler/std-wasi/crypto.optimized.wat rename to tests/compiler/std-wasi/crypto.release.wat index 3fc9a34046..6e995dbb52 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.release.wat @@ -3,9 +3,9 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -30,209 +30,108 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23284)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") - (data (i32.const 1100) ",") - (data (i32.const 1112) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1148) ",") - (data (i32.const 1160) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1196) "<") - (data (i32.const 1208) "\01\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 (i32.const 1260) "<") - (data (i32.const 1272) "\01\00\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 (i32.const 1324) "<") - (data (i32.const 1336) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1452) "<") - (data (i32.const 1464) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1516) ",") - (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1596) "<") - (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) "<") - (data (i32.const 1672) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1724) ",") - (data (i32.const 1736) "\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") - (data (i32.const 1772) "\1c") - (data (i32.const 1784) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") - (data (i32.const 1804) "\1c") - (data (i32.const 1816) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") - (data (i32.const 1836) ",") - (data (i32.const 1848) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") - (data (i32.const 1884) ",") - (data (i32.const 1896) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") - (data (i32.const 1932) ",") - (data (i32.const 1944) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 1980) "\1c") - (data (i32.const 1992) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") - (data (i32.const 2012) ",") - (data (i32.const 2024) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") - (data (i32.const 2060) "\1c") - (data (i32.const 2072) "\01\00\00\00\08\00\00\00B\00A\00D\00F") - (data (i32.const 2092) "\1c") - (data (i32.const 2104) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") - (data (i32.const 2124) "\1c") - (data (i32.const 2136) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") - (data (i32.const 2156) ",") - (data (i32.const 2168) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") - (data (i32.const 2204) "\1c") - (data (i32.const 2216) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") - (data (i32.const 2236) ",") - (data (i32.const 2248) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") - (data (i32.const 2284) ",") - (data (i32.const 2296) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") - (data (i32.const 2332) ",") - (data (i32.const 2344) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") - (data (i32.const 2380) "\1c") - (data (i32.const 2392) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") - (data (i32.const 2412) ",") - (data (i32.const 2424) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") - (data (i32.const 2460) "\1c") - (data (i32.const 2472) "\01\00\00\00\06\00\00\00D\00O\00M") - (data (i32.const 2492) "\1c") - (data (i32.const 2504) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") - (data (i32.const 2524) "\1c") - (data (i32.const 2536) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") - (data (i32.const 2556) "\1c") - (data (i32.const 2568) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") - (data (i32.const 2588) "\1c") - (data (i32.const 2600) "\01\00\00\00\08\00\00\00F\00B\00I\00G") - (data (i32.const 2620) ",") - (data (i32.const 2632) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 2668) "\1c") - (data (i32.const 2680) "\01\00\00\00\08\00\00\00I\00D\00R\00M") - (data (i32.const 2700) "\1c") - (data (i32.const 2712) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") - (data (i32.const 2732) ",") - (data (i32.const 2744) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") - (data (i32.const 2780) "\1c") - (data (i32.const 2792) "\01\00\00\00\08\00\00\00I\00N\00T\00R") - (data (i32.const 2812) "\1c") - (data (i32.const 2824) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") - (data (i32.const 2844) "\1c") - (data (i32.const 2856) "\01\00\00\00\04\00\00\00I\00O") - (data (i32.const 2876) "\1c") - (data (i32.const 2888) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") - (data (i32.const 2908) "\1c") - (data (i32.const 2920) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") - (data (i32.const 2940) "\1c") - (data (i32.const 2952) "\01\00\00\00\08\00\00\00L\00O\00O\00P") - (data (i32.const 2972) "\1c") - (data (i32.const 2984) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") - (data (i32.const 3004) "\1c") - (data (i32.const 3016) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") - (data (i32.const 3036) ",") - (data (i32.const 3048) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") - (data (i32.const 3084) ",") - (data (i32.const 3096) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") - (data (i32.const 3132) ",") - (data (i32.const 3144) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") - (data (i32.const 3180) ",") - (data (i32.const 3192) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") - (data (i32.const 3228) ",") - (data (i32.const 3240) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") - (data (i32.const 3276) ",") - (data (i32.const 3288) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") - (data (i32.const 3356) "\1c") - (data (i32.const 3368) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") - (data (i32.const 3388) "\1c") - (data (i32.const 3400) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") - (data (i32.const 3420) "\1c") - (data (i32.const 3432) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") - (data (i32.const 3516) "\1c") - (data (i32.const 3528) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") - (data (i32.const 3548) "\1c") - (data (i32.const 3560) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") - (data (i32.const 3580) "\1c") - (data (i32.const 3592) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") - (data (i32.const 3612) ",") - (data (i32.const 3624) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") - (data (i32.const 3660) "\1c") - (data (i32.const 3672) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") - (data (i32.const 3692) "\1c") - (data (i32.const 3704) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") - (data (i32.const 3724) ",") - (data (i32.const 3736) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") - (data (i32.const 3772) "\1c") - (data (i32.const 3784) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") - (data (i32.const 3804) ",") - (data (i32.const 3816) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") - (data (i32.const 3852) ",") - (data (i32.const 3864) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") - (data (i32.const 3900) ",") - (data (i32.const 3912) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") - (data (i32.const 3948) "\1c") - (data (i32.const 3960) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") - (data (i32.const 3980) "\1c") - (data (i32.const 3992) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") - (data (i32.const 4012) "\1c") - (data (i32.const 4024) "\01\00\00\00\08\00\00\00N\00X\00I\00O") - (data (i32.const 4044) ",") - (data (i32.const 4056) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") - (data (i32.const 4092) ",") - (data (i32.const 4104) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") - (data (i32.const 4140) "\1c") - (data (i32.const 4152) "\01\00\00\00\08\00\00\00P\00E\00R\00M") - (data (i32.const 4172) "\1c") - (data (i32.const 4184) "\01\00\00\00\08\00\00\00P\00I\00P\00E") - (data (i32.const 4204) "\1c") - (data (i32.const 4216) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") - (data (i32.const 4236) ",") - (data (i32.const 4248) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 4284) ",") - (data (i32.const 4296) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") - (data (i32.const 4332) "\1c") - (data (i32.const 4344) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") - (data (i32.const 4364) "\1c") - (data (i32.const 4376) "\01\00\00\00\08\00\00\00R\00O\00F\00S") - (data (i32.const 4396) "\1c") - (data (i32.const 4408) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") - (data (i32.const 4428) "\1c") - (data (i32.const 4440) "\01\00\00\00\08\00\00\00S\00R\00C\00H") - (data (i32.const 4460) "\1c") - (data (i32.const 4472) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") - (data (i32.const 4492) ",") - (data (i32.const 4504) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") - (data (i32.const 4540) "\1c") - (data (i32.const 4552) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") - (data (i32.const 4572) "\1c") - (data (i32.const 4584) "\01\00\00\00\08\00\00\00X\00D\00E\00V") - (data (i32.const 4604) ",") - (data (i32.const 4616) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") - (data (i32.const 4652) ",") - (data (i32.const 4664) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") - (data (i32.const 4700) ",") - (data (i32.const 4712) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") - (data (i32.const 4748) "L") - (data (i32.const 4760) "\01\00\00\000\00\00\00c\00r\00y\00p\00t\00o\00.\00g\00e\00t\00R\00a\00n\00d\00o\00m\00V\00a\00l\00u\00e\00s\00:\00 ") - (data (i32.const 4828) "\1c") - (data (i32.const 4840) "\01") - (data (i32.const 4860) "|") - (data (i32.const 4872) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 4988) "<") - (data (i32.const 5000) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 5052) "\1c") - (data (i32.const 5064) "\01\00\00\00\02\00\00\000") + (data (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") + (data (i32.const 1100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1196) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1260) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1324) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1452) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1884) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1932) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 2156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 3036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 3084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 3132) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 3180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3900) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 4044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 4092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 4140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 4172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 4204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 4236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 4284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 4332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 4364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 4396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 4428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 4460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 4492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 4604) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") + (data (i32.const 4748) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00r\00y\00p\00t\00o\00.\00g\00e\00t\00R\00a\00n\00d\00o\00m\00V\00a\00l\00u\00e\00s\00:\00 ") + (data (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 4860) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 4988) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 5084) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 5484) "\1c\04") - (data (i32.const 5496) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 6540) "\\") - (data (i32.const 6552) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 6636) "\1c") - (data (i32.const 6648) "\01\00\00\00\02\00\00\00,") - (data (i32.const 6700) "<") - (data (i32.const 6712) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 6764) "\1c") - (data (i32.const 6776) "\01\00\00\00\02\00\00\00\n") - (data (i32.const 6796) "<") - (data (i32.const 6808) "\01\00\00\00$\00\00\00s\00t\00d\00-\00w\00a\00s\00i\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") - (data (i32.const 6864) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 6892) "A\00\00\00\02") + (data (i32.const 5484) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 6540) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 6636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 6700) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 6764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n") + (data (i32.const 6796) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00-\00w\00a\00s\00i\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") + (data (i32.const 6864) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -429,6 +328,13 @@ i64.store local.get $0 if (result i32) + i32.const 0 + else + i32.const 1 + end + if (result i32) + i32.const 19 + else local.get $0 i32.const 20 i32.sub @@ -444,8 +350,6 @@ call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 19 i32.add - else - i32.const 19 end local.tee $0 i32.const 544106784 @@ -455,6 +359,12 @@ i32.add local.set $0 local.get $1 + if (result i32) + i32.const 0 + else + i32.const 1 + end + i32.eqz if local.get $1 i32.const 20 @@ -1961,7 +1871,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -1975,17 +1885,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -1996,19 +1906,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2139,182 +2049,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) block $break|0 @@ -2653,8 +2392,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4720 - i32.const 9 i32.const 14 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -2835,906 +2574,33 @@ call $~lib/util/number/utoa32_dec_lut local.get $0 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + (local $6 i32) local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $6 - local.get $0 - i32.load offset=8 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + i32.load offset=4 + local.set $6 + local.get $0 + i32.load offset=8 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 i32.const 1 i32.sub @@ -3899,7 +2765,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $4 i32.add @@ -4017,7 +2883,7 @@ local.get $3 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -4107,13 +2973,13 @@ local.get $1 i32.const 4768 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $2 i32.add local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -4202,7 +3068,7 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 6720 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -4212,27 +3078,26 @@ end local.get $0 local.get $0 - local.tee $1 - local.tee $2 i32.const 20 i32.sub i32.load offset=16 + local.get $0 i32.add local.set $3 i32.const 0 - local.set $0 + local.set $2 loop $while-continue|0 - local.get $2 + local.get $0 local.get $3 i32.lt_u if - local.get $2 + local.get $0 i32.load16_u local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1 i32.add else @@ -4240,7 +3105,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 2 i32.add else @@ -4250,40 +3115,40 @@ i32.const 55296 i32.eq local.get $3 - local.get $2 + local.get $0 i32.const 2 i32.add i32.gt_u i32.and if - local.get $2 + local.get $0 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $0 - i32.const 4 - i32.add - local.set $0 local.get $2 i32.const 4 i32.add local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $2 i32.const 3 i32.add end end - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.const 2 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end @@ -4293,49 +3158,48 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $2 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $0 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $2 i32.ne if i32.const 0 i32.const 6720 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable end i32.const 6672 - local.get $2 + local.get $0 i32.store i32.const 6676 - local.get $0 + local.get $2 i32.store i32.const 1 i32.const 6672 i32.const 1 i32.const 6680 call $~lib/bindings/wasi_snapshot_preview1/fd_write - local.set $0 - local.get $2 - call $~lib/rt/tlsf/__free + local.set $1 local.get $0 + call $~lib/rt/tlsf/__free + local.get $1 i32.const 65535 i32.and if - local.get $0 + local.get $1 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 6720 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -4825,7 +3689,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4836,7 +3699,6 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 local.tee $4 i32.const 0 i32.store @@ -4861,9 +3723,8 @@ i32.const 0 i32.gt_s select - local.tee $4 - local.set $5 - local.get $3 + local.set $3 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4883,7 +3744,7 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -4913,7 +3774,7 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $5 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -4925,31 +3786,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $0 - local.get $6 + local.get $4 i32.store - local.get $6 + local.get $4 if local.get $0 - local.get $6 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $4 i32.store offset=4 local.get $0 - local.get $5 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -4969,8 +3830,8 @@ local.get $1 i32.load offset=4 i32.add - local.get $4 - call $~lib/memory/memory.copy + local.get $3 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.debug.wat similarity index 88% rename from tests/compiler/std-wasi/process.untouched.wat rename to tests/compiler/std-wasi/process.debug.wat index 14830a5737..93f72ce6f5 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) @@ -29,9 +29,10 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/bindings/wasi/tempbuf i32 (i32.const 64)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/process/process.arch i32 (i32.const 3424)) (global $~lib/process/process.platform i32 (i32.const 3504)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -43,8 +44,7 @@ (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/process/process.argv (mut i32) (i32.const 0)) (global $std-wasi/process/argv (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) @@ -193,6 +193,159 @@ local.get $1 i32.store ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -546,7 +699,7 @@ local.set $4 local.get $0 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $0 @@ -570,7 +723,7 @@ local.set $4 local.get $1 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $1 @@ -2974,7 +3127,7 @@ local.get $7 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -3003,7 +3156,7 @@ if i32.const 0 i32.const 3200 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable @@ -3033,7 +3186,7 @@ local.get $10 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -3637,1634 +3790,150 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 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 3328 + i32.const 3632 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3632 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if local.get $0 - local.set $5 - local.get $1 + i32.const 20 + i32.sub local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 3328 - i32.const 3632 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3632 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 end - loop $while-continue|5 + if local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + call $~lib/rt/itcms/Object#makeGray end end end ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -5307,7 +3976,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) @@ -5494,111 +4163,6 @@ local.get $1 i32.store offset=20 ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - 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 $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - ) (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -5924,48 +4488,6 @@ end return ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) (func $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -6157,6 +4679,8 @@ ) (func $~lib/process/process.time (result i64) (local $0 i32) + i32.const 1 + drop i32.const 0 i64.const 1000000 global.get $~lib/bindings/wasi/tempbuf @@ -6169,8 +4693,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 51 - i32.const 14 + i32.const 65 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -6178,6 +4702,7 @@ i64.load i64.const 1000000 i64.div_u + return ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -6726,6 +5251,8 @@ (func $~lib/process/process.hrtime (result i64) (local $0 i32) i32.const 1 + drop + i32.const 1 i64.const 0 global.get $~lib/bindings/wasi/tempbuf call $~lib/bindings/wasi_snapshot_preview1/clock_time_get @@ -6737,13 +5264,14 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 57 - i32.const 14 + i32.const 75 + i32.const 16 call $~lib/wasi/index/abort unreachable end global.get $~lib/bindings/wasi/tempbuf i64.load + return ) (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) local.get $0 @@ -6751,6 +5279,8 @@ call $~lib/util/number/utoa64 ) (func $~lib/process/process.exit (param $0 i32) + i32.const 1 + drop local.get $0 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) @@ -6779,7 +5309,7 @@ if i32.const 3760 i32.const 3200 - i32.const 135 + i32.const 168 i32.const 7 call $~lib/wasi/index/abort unreachable @@ -6811,7 +5341,7 @@ local.get $4 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 140 + i32.const 173 i32.const 14 call $~lib/wasi/index/abort unreachable @@ -7100,6 +5630,8 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop global.get $~lib/process/process.stdout local.set $1 local.get $1 @@ -7219,6 +5751,8 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 + i32.const 1 + drop global.get $~lib/bindings/wasi/tempbuf global.get $~lib/bindings/wasi/tempbuf i32.const 4 @@ -7232,8 +5766,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 85 - i32.const 12 + i32.const 114 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -7267,8 +5801,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 92 - i32.const 12 + i32.const 121 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -7369,6 +5903,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $12 + return ) (func $~lib/map/Map<~lib/string/String,~lib/string/String>#keys (param $0 i32) (result i32) (local $1 i32) @@ -8056,6 +6591,8 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + i32.const 1 + drop global.get $~lib/bindings/wasi/tempbuf global.get $~lib/bindings/wasi/tempbuf i32.const 4 @@ -8069,8 +6606,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 64 - i32.const 12 + i32.const 89 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -8104,8 +6641,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 3200 - i32.const 71 - i32.const 12 + i32.const 96 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -8164,6 +6701,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $12 + return ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -8441,7 +6979,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std-wasi/process.json b/tests/compiler/std-wasi/process.json index ca8bfd0d09..c7e46bd414 100644 --- a/tests/compiler/std-wasi/process.json +++ b/tests/compiler/std-wasi/process.json @@ -1,6 +1,6 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ], "asc_wasi": { "args": [ @@ -14,8 +14,5 @@ "THIRDENV": "thirdEnv" }, "returnOnExit": true - }, - "features": [ - "bigint-integration" - ] + } } diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.release.wat similarity index 75% rename from tests/compiler/std-wasi/process.optimized.wat rename to tests/compiler/std-wasi/process.release.wat index 82853116b0..b829a44713 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.release.wat @@ -1,7 +1,7 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -38,233 +38,243 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23788)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\14\00\00\00=\00=\00 \00a\00r\00c\00h\00 \00=\00=") - (data (i32.const 1116) "<") - (data (i32.const 1128) "\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") - (data (i32.const 1180) ",") - (data (i32.const 1192) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1228) ",") - (data (i32.const 1240) "\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") - (data (i32.const 1276) "\1c") - (data (i32.const 1288) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") - (data (i32.const 1308) "\1c") - (data (i32.const 1320) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") - (data (i32.const 1340) ",") - (data (i32.const 1352) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") - (data (i32.const 1388) ",") - (data (i32.const 1400) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") - (data (i32.const 1436) ",") - (data (i32.const 1448) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 1484) "\1c") - (data (i32.const 1496) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") - (data (i32.const 1516) ",") - (data (i32.const 1528) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") - (data (i32.const 1564) "\1c") - (data (i32.const 1576) "\01\00\00\00\08\00\00\00B\00A\00D\00F") - (data (i32.const 1596) "\1c") - (data (i32.const 1608) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") - (data (i32.const 1628) "\1c") - (data (i32.const 1640) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") - (data (i32.const 1660) ",") - (data (i32.const 1672) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") - (data (i32.const 1708) "\1c") - (data (i32.const 1720) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") - (data (i32.const 1740) ",") - (data (i32.const 1752) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") - (data (i32.const 1788) ",") - (data (i32.const 1800) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") - (data (i32.const 1836) ",") - (data (i32.const 1848) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") - (data (i32.const 1884) "\1c") - (data (i32.const 1896) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") - (data (i32.const 1916) ",") - (data (i32.const 1928) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") - (data (i32.const 1964) "\1c") - (data (i32.const 1976) "\01\00\00\00\06\00\00\00D\00O\00M") - (data (i32.const 1996) "\1c") - (data (i32.const 2008) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") - (data (i32.const 2028) "\1c") - (data (i32.const 2040) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") - (data (i32.const 2060) "\1c") - (data (i32.const 2072) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") - (data (i32.const 2092) "\1c") - (data (i32.const 2104) "\01\00\00\00\08\00\00\00F\00B\00I\00G") - (data (i32.const 2124) ",") - (data (i32.const 2136) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 2172) "\1c") - (data (i32.const 2184) "\01\00\00\00\08\00\00\00I\00D\00R\00M") - (data (i32.const 2204) "\1c") - (data (i32.const 2216) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") - (data (i32.const 2236) ",") - (data (i32.const 2248) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") - (data (i32.const 2284) "\1c") - (data (i32.const 2296) "\01\00\00\00\08\00\00\00I\00N\00T\00R") - (data (i32.const 2316) "\1c") - (data (i32.const 2328) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") - (data (i32.const 2348) "\1c") - (data (i32.const 2360) "\01\00\00\00\04\00\00\00I\00O") - (data (i32.const 2380) "\1c") - (data (i32.const 2392) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") - (data (i32.const 2412) "\1c") - (data (i32.const 2424) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") - (data (i32.const 2444) "\1c") - (data (i32.const 2456) "\01\00\00\00\08\00\00\00L\00O\00O\00P") - (data (i32.const 2476) "\1c") - (data (i32.const 2488) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") - (data (i32.const 2508) "\1c") - (data (i32.const 2520) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") - (data (i32.const 2540) ",") - (data (i32.const 2552) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") - (data (i32.const 2588) ",") - (data (i32.const 2600) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") - (data (i32.const 2636) ",") - (data (i32.const 2648) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") - (data (i32.const 2684) ",") - (data (i32.const 2696) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") - (data (i32.const 2732) ",") - (data (i32.const 2744) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") - (data (i32.const 2780) ",") - (data (i32.const 2792) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") - (data (i32.const 2828) "\1c") - (data (i32.const 2840) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") - (data (i32.const 2860) "\1c") - (data (i32.const 2872) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") - (data (i32.const 2892) "\1c") - (data (i32.const 2904) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") - (data (i32.const 2924) "\1c") - (data (i32.const 2936) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") - (data (i32.const 2956) "\1c") - (data (i32.const 2968) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") - (data (i32.const 2988) "\1c") - (data (i32.const 3000) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") - (data (i32.const 3020) "\1c") - (data (i32.const 3032) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") - (data (i32.const 3052) "\1c") - (data (i32.const 3064) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") - (data (i32.const 3084) "\1c") - (data (i32.const 3096) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") - (data (i32.const 3116) ",") - (data (i32.const 3128) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") - (data (i32.const 3164) "\1c") - (data (i32.const 3176) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") - (data (i32.const 3196) "\1c") - (data (i32.const 3208) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") - (data (i32.const 3228) ",") - (data (i32.const 3240) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") - (data (i32.const 3276) "\1c") - (data (i32.const 3288) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") - (data (i32.const 3308) ",") - (data (i32.const 3320) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") - (data (i32.const 3356) ",") - (data (i32.const 3368) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") - (data (i32.const 3404) ",") - (data (i32.const 3416) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") - (data (i32.const 3516) "\1c") - (data (i32.const 3528) "\01\00\00\00\08\00\00\00N\00X\00I\00O") - (data (i32.const 3548) ",") - (data (i32.const 3560) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") - (data (i32.const 3596) ",") - (data (i32.const 3608) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") - (data (i32.const 3644) "\1c") - (data (i32.const 3656) "\01\00\00\00\08\00\00\00P\00E\00R\00M") - (data (i32.const 3676) "\1c") - (data (i32.const 3688) "\01\00\00\00\08\00\00\00P\00I\00P\00E") - (data (i32.const 3708) "\1c") - (data (i32.const 3720) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") - (data (i32.const 3740) ",") - (data (i32.const 3752) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") - (data (i32.const 3788) ",") - (data (i32.const 3800) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") - (data (i32.const 3836) "\1c") - (data (i32.const 3848) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") - (data (i32.const 3868) "\1c") - (data (i32.const 3880) "\01\00\00\00\08\00\00\00R\00O\00F\00S") - (data (i32.const 3900) "\1c") - (data (i32.const 3912) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") - (data (i32.const 3932) "\1c") - (data (i32.const 3944) "\01\00\00\00\08\00\00\00S\00R\00C\00H") - (data (i32.const 3964) "\1c") - (data (i32.const 3976) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") - (data (i32.const 3996) ",") - (data (i32.const 4008) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") - (data (i32.const 4044) "\1c") - (data (i32.const 4056) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") - (data (i32.const 4076) "\1c") - (data (i32.const 4088) "\01\00\00\00\08\00\00\00X\00D\00E\00V") - (data (i32.const 4108) ",") - (data (i32.const 4120) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") - (data (i32.const 4156) ",") - (data (i32.const 4168) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") - (data (i32.const 4204) "<") - (data (i32.const 4216) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 4268) "<") - (data (i32.const 4280) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 4332) "<") - (data (i32.const 4344) "\01\00\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 (i32.const 4396) "\1c") - (data (i32.const 4408) "\01\00\00\00\02\00\00\00\n") - (data (i32.const 4428) "\1c") - (data (i32.const 4440) "\01\00\00\00\0c\00\00\00w\00a\00s\00m\003\002") - (data (i32.const 4460) ",") - (data (i32.const 4472) "\01\00\00\00\1c\00\00\00=\00=\00 \00p\00l\00a\00t\00f\00o\00r\00m\00 \00=\00=") - (data (i32.const 4508) "\1c") - (data (i32.const 4520) "\01\00\00\00\08\00\00\00w\00a\00s\00m") - (data (i32.const 4540) ",") - (data (i32.const 4552) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 4588) ",") - (data (i32.const 4600) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 4636) "<") - (data (i32.const 4648) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 4764) "<") - (data (i32.const 4776) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 4828) ",") - (data (i32.const 4840) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 4908) ",") - (data (i32.const 4920) "\01\00\00\00\14\00\00\00=\00=\00 \00a\00r\00g\00v\00 \00=\00=") - (data (i32.const 4956) "|") - (data (i32.const 4968) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 5084) "<") - (data (i32.const 5096) "\01\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 (i32.const 5148) "\1c") - (data (i32.const 5160) "\01\00\00\00\02\00\00\00=") - (data (i32.const 5180) "\1c") - (data (i32.const 5192) "\01") - (data (i32.const 5212) ",") - (data (i32.const 5224) "\01\00\00\00\12\00\00\00=\00=\00 \00e\00n\00v\00 \00=\00=") - (data (i32.const 5260) "\1c") - (data (i32.const 5272) "\01\00\00\00\n\00\00\00k\00e\00y\00:\00 ") - (data (i32.const 5292) "\1c") - (data (i32.const 5304) "\01\00\00\00\n\00\00\00v\00a\00l\00:\00 ") - (data (i32.const 5324) "<") - (data (i32.const 5336) "\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 5388) ",") - (data (i32.const 5400) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 5436) ",") - (data (i32.const 5448) "\01\00\00\00\14\00\00\00=\00=\00 \00t\00i\00m\00e\00 \00=\00=") - (data (i32.const 5484) "|") - (data (i32.const 5496) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 5612) "<") - (data (i32.const 5624) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 5676) "\1c") - (data (i32.const 5688) "\01\00\00\00\02\00\00\000") + (data (i32.const 1036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00=\00=\00 \00a\00r\00c\00h\00 \00=\00=") + (data (i32.const 1116) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") + (data (i32.const 1180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 1516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 1564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 1596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 1628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 1660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 1740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 1788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 1836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 1916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 1996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 2588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 2636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 3548) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 3740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 3788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 3996) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 4076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 4108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4204) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 4268) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 4332) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 4396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n") + (data (i32.const 4428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00w\00a\00s\00m\003\002") + (data (i32.const 4460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00=\00=\00 \00p\00l\00a\00t\00f\00o\00r\00m\00 \00=\00=") + (data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00w\00a\00s\00m") + (data (i32.const 4540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 4588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 4636) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 4764) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 4828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 4908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00=\00=\00 \00a\00r\00g\00v\00 \00=\00=") + (data (i32.const 4956) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 5084) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00=") + (data (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00=\00=\00 \00e\00n\00v\00 \00=\00=") + (data (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\00:\00 ") + (data (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00:\00 ") + (data (i32.const 5324) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data (i32.const 5388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 5436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00=\00=\00 \00t\00i\00m\00e\00 \00=\00=") + (data (i32.const 5484) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 5612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 5708) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 6108) "\1c\04") - (data (i32.const 6120) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 7164) "\\") - (data (i32.const 7176) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 7260) ",") - (data (i32.const 7272) "\01\00\00\00\18\00\00\00=\00=\00 \00h\00r\00t\00i\00m\00e\00 \00=\00=") - (data (i32.const 7308) ",") - (data (i32.const 7320) "\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=") - (data (i32.const 7360) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 7388) "\02A\00\00\00\00\00\00\10A\82") + (data (i32.const 6108) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 7164) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 7260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00=\00=\00 \00h\00r\00t\00i\00m\00e\00 \00=\00=") + (data (i32.const 7308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=") + (data (i32.const 7360) "\05\00\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\10A\82") (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -458,7 +468,11 @@ i64.const 9071471065260641 i64.store local.get $0 + i32.const 0 + call $~lib/string/String.__eq if (result i32) + i32.const 19 + else local.get $0 i32.const 20 i32.sub @@ -474,8 +488,6 @@ call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 19 i32.add - else - i32.const 19 end local.tee $0 i32.const 544106784 @@ -485,6 +497,9 @@ i32.add local.set $0 local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if local.get $1 i32.const 20 @@ -1828,7 +1843,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -1842,17 +1857,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -1863,19 +1878,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2027,7 +2042,7 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 178 + i32.const 211 i32.const 16 call $~lib/wasi/index/abort unreachable @@ -2037,27 +2052,26 @@ end local.get $0 local.get $0 - local.tee $1 - local.tee $2 i32.const 20 i32.sub i32.load offset=16 + local.get $0 i32.add local.set $3 i32.const 0 - local.set $0 + local.set $2 loop $while-continue|0 - local.get $2 + local.get $0 local.get $3 i32.lt_u if - local.get $2 + local.get $0 i32.load16_u local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1 i32.add else @@ -2065,7 +2079,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 2 i32.add else @@ -2075,40 +2089,40 @@ i32.const 55296 i32.eq local.get $3 - local.get $2 + local.get $0 i32.const 2 i32.add i32.gt_u i32.and if - local.get $2 + local.get $0 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $0 - i32.const 4 - i32.add - local.set $0 local.get $2 i32.const 4 i32.add local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $2 i32.const 3 i32.add end end - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.const 2 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end @@ -2118,49 +2132,48 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $2 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $2 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $0 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $2 i32.ne if i32.const 0 i32.const 4224 - i32.const 184 + i32.const 217 i32.const 3 call $~lib/wasi/index/abort unreachable end i32.const 1088 - local.get $2 + local.get $0 i32.store i32.const 1092 - local.get $0 + local.get $2 i32.store i32.const 1 i32.const 1088 i32.const 1 i32.const 1096 call $~lib/bindings/wasi_snapshot_preview1/fd_write - local.set $0 - local.get $2 - call $~lib/rt/tlsf/__free + local.set $1 local.get $0 + call $~lib/rt/tlsf/__free + local.get $1 i32.const 65535 i32.and if - local.get $0 + local.get $1 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 189 + i32.const 222 i32.const 12 call $~lib/wasi/index/abort unreachable @@ -2720,1105 +2733,61 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $3 local.get $1 - i32.const 0 - i32.store8 + i32.store offset=16 local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - call $~lib/memory/memory.copy - local.get $2 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 2 - i32.shr_u - local.get $1 - i32.lt_u - if + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + local.get $1 + i32.lt_u + if local.get $1 i32.const 268435455 i32.gt_u @@ -3839,9 +2808,6 @@ i32.const 2 i32.shl local.set $1 - local.get $0 - i32.load - local.tee $4 local.get $2 if local.get $3 @@ -3861,6 +2827,9 @@ select local.set $1 end + local.get $0 + i32.load + local.tee $4 local.get $1 call $~lib/rt/itcms/__renew local.tee $2 @@ -3931,85 +2900,6 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $1 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $3 - local.tee $0 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - if - local.get $1 - i32.load16_u - local.tee $0 - local.get $2 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $0 - local.get $4 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -4399,126 +3289,118 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/map/Map<~lib/string/String,~lib/string/String> - block $~lib/array/Array<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView + block $folding-inner0 + block $invalid + block $~lib/map/Map<~lib/string/String,~lib/string/String> + block $~lib/array/Array<~lib/string/String> block $~lib/string/String block $~lib/arraybuffer/ArrayBuffer local.get $0 i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array<~lib/string/String> $~lib/map/Map<~lib/string/String,~lib/string/String> $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/map/Map<~lib/string/String,~lib/string/String> $invalid end return end return end local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 - i32.load - local.tee $3 + local.get $2 + i32.lt_u if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 end + br $folding-inner0 end local.get $0 i32.load - local.tee $0 + local.tee $1 if - local.get $0 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__visit end - return - end - local.get $0 - i32.load - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - local.get $0 - i32.load offset=8 - local.tee $1 - local.tee $0 - i32.add - local.set $2 - loop $while-continue|01 local.get $0 - local.get $2 - i32.lt_u - if + i32.load offset=16 + i32.const 12 + i32.mul + local.get $0 + i32.load offset=8 + local.tee $1 + local.tee $0 + i32.add + local.set $2 + loop $while-continue|01 local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $2 + i32.lt_u if local.get $0 - i32.load - local.tee $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + local.get $0 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 - i32.load offset=4 - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end + i32.const 12 + i32.add + local.set $0 + br $while-continue|01 end - local.get $0 - i32.const 12 - i32.add - local.set $0 - br $while-continue|01 end - end - local.get $1 - if local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - return + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start global.get $~started @@ -4562,7 +3444,6 @@ ) (func $~lib/map/Map<~lib/string/String,~lib/string/String>#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4597,56 +3478,20 @@ if local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - block $__inlined_func$~lib/string/String.__eq (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - i32.const 1 - local.get $1 - local.get $3 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - select - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - local.get $3 - i32.const 0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/string/String.__eq end if global.get $~lib/memory/__stack_pointer @@ -4656,7 +3501,7 @@ local.get $0 return end - local.get $4 + local.get $2 i32.const -2 i32.and local.set $0 @@ -4705,34 +3550,34 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 85 - i32.const 12 + i32.const 114 + i32.const 14 call $~lib/wasi/index/abort unreachable end i32.const 1088 i32.load - local.tee $5 + local.tee $4 i32.const 2 i32.shl local.tee $0 i32.const 1092 i32.load i32.add - local.set $4 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $3 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.add call $~lib/bindings/wasi_snapshot_preview1/environ_get local.tee $0 @@ -4742,13 +3587,13 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 92 - i32.const 12 + i32.const 121 + i32.const 14 call $~lib/wasi/index/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4757,84 +3602,85 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $5 i32.const 0 i32.store - local.get $0 + local.get $5 i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $6 i32.store local.get $6 if - local.get $0 + local.get $5 local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 + local.get $5 i32.const 3 i32.store offset=4 - local.get $0 + local.get $5 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $6 i32.store offset=8 local.get $6 if - local.get $0 + local.get $5 local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 + local.get $5 i32.const 4 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $5 i32.store loop $for-loop|0 - local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.tee $1 - local.get $1 - local.get $4 + local.tee $0 + local.get $0 + local.get $3 i32.add - local.get $2 + local.get $1 i32.sub call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 i32.store offset=4 - block $__inlined_func$~lib/string/String#indexOf (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=8 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + i32.const 0 + local.set $0 + block $__inlined_func$~lib/string/String#indexOf i32.const 5164 i32.load i32.const 1 @@ -4842,8 +3688,8 @@ local.tee $7 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf - drop i32.const -1 + local.set $0 local.get $6 i32.const 20 i32.sub @@ -4853,85 +3699,83 @@ local.tee $8 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf - drop i32.const 0 - local.set $1 + local.set $0 local.get $8 local.get $7 i32.sub local.set $8 loop $for-loop|02 - local.get $1 + local.get $0 local.get $8 i32.le_s if - local.get $1 local.get $6 - local.get $1 + local.get $0 i32.const 5168 local.get $7 call $~lib/util/string/compareImpl i32.eqz br_if $__inlined_func$~lib/string/String#indexOf - drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|02 end end i32.const -1 + local.set $0 end - local.tee $1 + local.get $0 i32.const -1 i32.xor if local.get $6 i32.const 0 - local.get $1 + local.get $0 call $~lib/string/String#substring local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=8 local.get $6 - local.get $1 + local.get $0 i32.const 1 i32.add i32.const 2147483647 call $~lib/string/String#substring - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 local.get $0 + i32.store offset=12 + local.get $5 local.get $7 - local.get $1 + local.get $0 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set else global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=12 - local.get $0 + local.get $5 local.get $6 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $1 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $5 return end i32.const 23808 @@ -5040,8 +3884,8 @@ local.get $3 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 64 - i32.const 12 + i32.const 89 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -5077,8 +3921,8 @@ local.get $4 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 71 - i32.const 12 + i32.const 96 + i32.const 14 call $~lib/wasi/index/abort unreachable end @@ -5342,8 +4186,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 51 - i32.const 14 + i32.const 65 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -5549,8 +4393,8 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 57 - i32.const 14 + i32.const 75 + i32.const 16 call $~lib/wasi/index/abort unreachable end @@ -5754,7 +4598,7 @@ local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 - i32.const 140 + i32.const 173 i32.const 14 call $~lib/wasi/index/abort unreachable @@ -5803,18 +4647,18 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 local.get $0 @@ -5837,35 +4681,35 @@ select i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store local.get $3 if - local.get $1 + local.get $2 local.get $3 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $2 local.get $3 i32.store offset=4 - local.get $1 local.get $2 - i32.store offset=8 local.get $1 + i32.store offset=8 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5900,7 +4744,7 @@ if i32.const 0 i32.const 1200 - i32.const 767 + i32.const 769 i32.const 7 call $~lib/wasi/index/abort unreachable @@ -6286,7 +5130,7 @@ local.get $4 i32.add local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -6319,7 +5163,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $8 + local.tee $7 call $~lib/map/Map<~lib/string/String,~lib/string/String>#find local.tee $3 if @@ -6360,7 +5204,7 @@ i32.const 1 i32.or end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -6377,14 +5221,14 @@ i32.const 0 i32.store offset=8 local.get $3 - local.get $7 + local.get $8 i32.const 1 i32.add local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer local.get $3 @@ -6392,7 +5236,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $9 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6400,13 +5244,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $10 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $10 + local.set $5 local.get $4 local.set $3 loop $while-continue|0 @@ -6414,14 +5258,14 @@ local.get $10 i32.ne if - local.get $5 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $10 i32.load local.tee $11 i32.store offset=8 @@ -6429,17 +5273,17 @@ local.get $11 i32.store local.get $3 - local.get $5 + local.get $10 i32.load offset=4 i32.store offset=4 local.get $3 local.get $11 call $~lib/util/hash/HASH<~lib/string/String> - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add local.tee $11 i32.load @@ -6452,25 +5296,25 @@ i32.add local.set $3 end - local.get $5 + local.get $10 i32.const 12 i32.add - local.set $5 + local.set $10 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $9 i32.store - local.get $6 + local.get $9 if local.get $0 - local.get $6 + local.get $9 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $7 + local.get $8 i32.store offset=4 local.get $0 local.get $4 @@ -6483,7 +5327,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $9 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -6542,7 +5386,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $8 + local.get $7 i32.and i32.const 2 i32.shl diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.debug.wat similarity index 99% rename from tests/compiler/std/array-access.untouched.wat rename to tests/compiler/std/array-access.debug.wat index 7b8ca0eb92..9699142e0f 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.debug.wat @@ -9,7 +9,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16668)) (global $~lib/memory/__heap_base i32 (i32.const 16668)) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.release.wat similarity index 100% rename from tests/compiler/std/array-access.optimized.wat rename to tests/compiler/std/array-access.release.wat diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.debug.wat similarity index 72% rename from tests/compiler/std/array-literal.untouched.wat rename to tests/compiler/std/array-literal.debug.wat index b32f64f179..919a120f91 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.debug.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -27,8 +27,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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)) @@ -2139,237 +2138,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2419,1262 +2187,9 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 @@ -3686,7 +2201,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.release.wat similarity index 92% rename from tests/compiler/std/array-literal.optimized.wat rename to tests/compiler/std/array-literal.release.wat index 114260b619..7a54e44aa8 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1355,7 +1355,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1370,7 +1370,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1383,7 +1383,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1391,7 +1391,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1402,16 +1402,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1422,16 +1422,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1439,7 +1439,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1447,8 +1447,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1465,7 +1465,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1475,13 +1475,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1494,40 +1494,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1587,182 +1587,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 @@ -1828,26 +1657,16 @@ block $std/array-literal/RefWithCtor block $~lib/array/Array block $std/array-literal/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end return diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.debug.wat similarity index 77% rename from tests/compiler/std/array.untouched.wat rename to tests/compiler/std/array.debug.wat index 2202591239..fec743e019 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.debug.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) @@ -31,7 +31,7 @@ (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) + (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)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) @@ -46,12 +46,12 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 $std/array/i (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (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)) @@ -70,13 +70,10 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $std/array/ArrayU32 i32 (i32.const 44)) - (global $std/array/ArrayU8 i32 (i32.const 45)) - (global $std/array/ArrayStr i32 (i32.const 46)) - (global $~lib/rt/__rtti_base i32 (i32.const 14240)) - (global $~lib/memory/__data_end i32 (i32.const 14628)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31012)) - (global $~lib/memory/__heap_base i32 (i32.const 31012)) + (global $~lib/rt/__rtti_base i32 (i32.const 14112)) + (global $~lib/memory/__data_end i32 (i32.const 14468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30852)) + (global $~lib/memory/__heap_base i32 (i32.const 30852)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") @@ -363,102 +360,11 @@ (data (i32.const 14012) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 14044) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 14076) "\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 (i32.const 14108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00\00\00\00\00") - (data (i32.const 14172) "\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 (i32.const 14204) "\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 (i32.const 14240) "0\00\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\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\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\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\02A\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\02a\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\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00!\00\00\00\00\00\00\00\00\00\00\00") - (table $0 65 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 $~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|47 $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 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $start:std/array~anonymous|53 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1) - (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayStr" (global $std/array/ArrayStr)) + (data (i32.const 14112) ",\00\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\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\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\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\02A\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\02a\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\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 63 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 $~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|47 $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 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $start:std/array~anonymous|53) (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) (export "_start" (func $~start)) - (export "ArrayU32#get:dataStart" (func $export:~lib/array/Array#get:dataStart)) - (export "ArrayU32#constructor" (func $export:std/array/ArrayU32#constructor@varargs)) - (export "ArrayU32#get:length" (func $export:~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $export:~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $export:~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $export:~lib/array/Array#findIndex)) - (export "ArrayU32#findLastIndex" (func $export:~lib/array/Array#findLastIndex)) - (export "ArrayU32#at" (func $export:~lib/array/Array#at)) - (export "ArrayU32#fill" (func $export:~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $export:~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $export:~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $export:~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $export:~lib/array/Array#push)) - (export "ArrayU32#concat" (func $export:~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $export:~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $export:~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $export:~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $export:~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $export:~lib/array/Array#shift)) - (export "ArrayU32#some" (func $export:~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $export:~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $export:~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $export:~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $export:~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $export:~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $export:~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $export:~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $export:~lib/array/Array#toString)) - (export "ArrayU8#get:dataStart" (func $export:~lib/array/Array#get:dataStart)) - (export "ArrayU8#constructor" (func $export:std/array/ArrayU8#constructor@varargs)) - (export "ArrayU8#get:length" (func $export:~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $export:~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $export:~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $export:~lib/array/Array#findIndex)) - (export "ArrayU8#findLastIndex" (func $export:~lib/array/Array#findLastIndex)) - (export "ArrayU8#at" (func $export:~lib/array/Array#at)) - (export "ArrayU8#fill" (func $export:~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $export:~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $export:~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $export:~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $export:~lib/array/Array#push)) - (export "ArrayU8#concat" (func $export:~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $export:~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $export:~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $export:~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $export:~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $export:~lib/array/Array#shift)) - (export "ArrayU8#some" (func $export:~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $export:~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $export:~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $export:~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $export:~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $export:~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $export:~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $export:~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $export:~lib/array/Array#toString)) - (export "ArrayStr#get:dataStart" (func $export:~lib/array/Array<~lib/string/String>#get:dataStart)) - (export "ArrayStr#constructor" (func $export:std/array/ArrayStr#constructor@varargs)) - (export "ArrayStr#get:length" (func $export:~lib/array/Array<~lib/string/String>#get:length)) - (export "ArrayStr#set:length" (func $export:~lib/array/Array<~lib/string/String>#set:length)) - (export "ArrayStr#every" (func $export:~lib/array/Array<~lib/string/String>#every)) - (export "ArrayStr#findIndex" (func $export:~lib/array/Array<~lib/string/String>#findIndex)) - (export "ArrayStr#findLastIndex" (func $export:~lib/array/Array<~lib/string/String>#findLastIndex)) - (export "ArrayStr#at" (func $export:~lib/array/Array<~lib/string/String>#at)) - (export "ArrayStr#fill" (func $export:~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $export:~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $export:~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $export:~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $export:~lib/array/Array<~lib/string/String>#copyWithin@varargs)) - (export "ArrayStr#pop" (func $export:~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $export:~lib/array/Array<~lib/string/String>#forEach)) - (export "ArrayStr#filter" (func $export:~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $export:~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $export:~lib/array/Array<~lib/string/String>#some)) - (export "ArrayStr#unshift" (func $export:~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $export:~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $export:~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $export:~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $export:~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $export:~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $export:~lib/array/Array<~lib/string/String>#flat)) - (export "ArrayStr#toString" (func $export:~lib/array/Array<~lib/string/String>#toString)) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -2479,237 +2385,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2759,7 +2434,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -2858,6 +2533,11 @@ local.get $0 i32.const 0 i32.ne + if (result i32) + i32.const 1 + else + i32.const 0 + end ) (func $std/array/Ref#set:v (param $0 i32) (param $1 i32) local.get $0 @@ -2865,7 +2545,14 @@ i32.store ) (func $~lib/array/Array.isArray (param $0 i32) (result i32) + local.get $0 i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end ) (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 @@ -2887,1374 +2574,1380 @@ i32.store offset=8 ) (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) + local.get $0 i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end ) (func $~lib/array/Array.isArray (param $0 i32) (result i32) i32.const 0 ) (func $~lib/array/Array.isArray<~lib/string/String> (param $0 i32) (result i32) + local.get $0 i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end ) (func $~lib/array/Array.isArray<~lib/array/Array> (param $0 i32) (result i32) local.get $0 i32.const 0 i32.ne + if (result i32) + i32.const 1 + else + i32.const 0 + end ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $0 + memory.copy + end + local.get $3 + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - loop $while-continue|0 + (local $7 i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $2 + local.tee $7 local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select end - local.get $0 - i32.const 3 - i32.and + local.set $2 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $3 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $5 + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + end + local.set $3 i32.const 0 + drop + i32.const 1 + i32.const 1 i32.eq + drop + local.get $2 + local.get $3 + i32.lt_s if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end + local.get $4 local.get $2 - i32.const 8 - i32.and + i32.add + local.get $1 + local.get $3 + local.get $2 + i32.sub + memory.fill + end + local.get $0 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.ne if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 + i32.const 0 + return end - local.get $2 - i32.const 4 - i32.and + local.get $0 + local.get $1 + i32.eq if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 + i32.const 1 + return end + end + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 local.get $2 - i32.const 2 - i32.and + i32.lt_s + local.set $4 + local.get $4 if + i32.const 0 + drop local.get $0 + local.get $3 + call $~lib/array/Array#__get local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 + local.get $3 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $3 + i32.const 1 i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 + local.set $3 + br $for-loop|0 end + end + i32.const 1 + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 local.get $2 - i32.const 1 - i32.and + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $2 + local.tee $7 + local.get $5 + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + end + local.set $2 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $3 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $5 + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + end + local.set $3 + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $7 + local.get $7 if - local.get $0 - local.tee $5 - i32.const 1 + local.get $4 + local.get $2 + i32.const 2 + i32.shl i32.add - local.set $0 - local.get $5 local.get $1 - local.tee $5 + i32.store + local.get $2 i32.const 1 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + local.set $2 + br $for-loop|0 end - return end - local.get $2 - i32.const 32 + local.get $0 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if i32.const 1 - i32.add - local.set $0 - local.get $5 + return + end + end + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + local.set $4 + local.get $4 + if + i32.const 0 + drop + local.get $0 + local.get $3 + call $~lib/array/Array#__get local.get $1 - local.tee $5 + local.get $3 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $3 i32.const 1 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 + local.set $3 + br $for-loop|0 end end + i32.const 1 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 local.get $2 - i32.const 16 + i32.load + i32.const 3 + i32.const -1 + i32.xor i32.and + i32.const 16 + i32.sub + i32.le_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + local.get $2 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + call $~lib/rt/itcms/Object#set:rtSize local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 1073741820 + local.get $2 + 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 $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + i32.load + local.set $5 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 local.get $5 - i32.load8_u - i32.store8 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#set:length_ + local.get $3 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/array/Array#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s + if + i32.const 1152 + i32.const 80 + i32.const 291 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + local.get $2 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + i32.const 0 + local.get $2 + local.get $1 + i32.const 0 + i32.ge_s + select + i32.add + local.set $1 + local.get $1 + local.get $2 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 147 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 0 + drop + local.get $3 + ) + (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + local.get $3 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $5 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 i32.add - local.set $0 - local.get $5 + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 + local.tee $6 local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $8 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $5 - local.get $1 - local.tee $5 - i32.const 1 + local.get $2 i32.add - local.set $1 + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else + local.get $2 + local.tee $6 local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $9 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) local.get $5 - local.get $1 - local.tee $5 - i32.const 1 + local.get $3 i32.add - local.set $1 + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else + local.get $3 + local.tee $6 local.get $5 - i32.load8_u - i32.store8 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $10 + local.get $10 + local.get $9 + i32.sub + local.tee $7 + local.get $5 + local.get $8 + i32.sub + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + local.set $11 + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.const 2 + i32.shl + memory.copy + local.get $0 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + return + end local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.eq + if + i32.const 1 + return + end end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + local.set $4 + local.get $4 + if + i32.const 0 + drop + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end + i32.const 1 + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.set $2 + local.get $0 local.get $2 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.set $3 + local.get $3 i32.const 4 - i32.and + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $3 + local.get $1 + i32.store + i32.const 0 + drop + local.get $0 + local.get $2 + call $~lib/array/Array#set:length_ + local.get $2 + ) + (func $~lib/array/Array#shift (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 1152 + i32.const 80 + i32.const 350 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + local.get $2 local.get $2 + i32.const 4 + i32.add + local.get $4 i32.const 2 - i32.and + i32.shl + memory.copy + i32.const 0 + drop + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $4 + call $~lib/array/Array#set:length_ + local.get $3 + ) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.gt_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + i32.const 0 + local.set $2 local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + i32.shr_u + local.set $4 + i32.const 0 i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 + i32.lt_s + drop + i32.const 4 i32.const 1 - i32.add - local.set $0 - local.get $5 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop local.get $1 - local.tee $5 i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load + local.set $8 + local.get $6 + local.get $7 + i32.load + i32.store + local.get $7 + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $0 + ) + (func $~lib/polyfills/bswap (param $0 i64) (result i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $0 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $1 + local.get $0 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $2 + local.get $1 + local.get $2 + i64.or + local.set $3 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $1 + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $2 + local.get $1 + local.get $2 + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 + (local $8 i64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $2 local.get $1 + i32.const 1 + i32.shr_u local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end i32.const 0 i32.const 1 i32.lt_s drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 i32.const 1 - i32.shl + i32.const 1 + i32.eq + drop + local.get $1 + i32.const 8 i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 + local.set $3 + loop $while-continue|0 + local.get $2 i32.const 7 - i32.and + i32.add + local.get $4 + i32.lt_u + local.set $5 local.get $5 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 + local.get $0 + local.get $2 + i32.add local.set $6 + local.get $0 + local.get $3 + i32.add + local.get $2 + i32.sub + local.set $7 local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end + i64.load + call $~lib/polyfills/bswap + local.set $8 + local.get $6 + local.get $7 + i64.load + call $~lib/polyfills/bswap + i64.store + local.get $7 + local.get $8 + i64.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $while-continue|0 end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop + end + i32.const 1 + i32.const 2 + i32.eq + drop + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $2 local.get $4 - i32.const 7 - i32.and + i32.lt_u + local.set $5 local.get $5 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 + local.get $0 + local.get $2 + i32.const 0 + i32.shl + i32.add + local.set $9 + local.get $0 local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $2 + i32.sub + i32.const 0 + i32.shl + i32.add + local.set $10 + local.get $9 + i32.load8_u + local.set $11 + local.get $9 + local.get $10 + i32.load8_u + i32.store8 + local.get $10 + local.get $11 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 end end end ) - (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/bytes/REVERSE local.get $0 - local.get $1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/bytes/REVERSE (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.const 1 + i32.gt_u + if i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $7 - local.get $5 - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $5 - local.tee $6 - local.get $7 - local.get $6 + i32.const 1 i32.lt_s - select - end - local.set $3 - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $2 - i32.add + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop local.get $1 - local.get $3 - local.get $2 + i32.const 2 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $2 + i32.const 1 + i32.add + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $7 + i32.load + i32.const 16 + i32.rotr + local.set $8 + local.get $7 + local.get $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $8 + i32.store + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 i32.sub - call $~lib/memory/memory.fill + local.set $3 + loop $while-continue|1 + local.get $2 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $9 + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $10 + local.get $9 + i32.load16_u + local.set $11 + local.get $9 + local.get $10 + i32.load16_u + i32.store16 + local.get $10 + local.get $11 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end end + ) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/bytes/REVERSE local.get $0 ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -4271,483 +3964,488 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 0 + i32.const 1 i32.shl i32.add - i32.load8_u + i32.load16_u local.set $2 i32.const 0 drop local.get $2 ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $3 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end + local.get $3 + i32.ge_s + end + if + i32.const -1 + return end + local.get $2 i32.const 0 - local.set $3 - loop $for-loop|0 + i32.lt_s + if local.get $3 local.get $2 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $6 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_s local.set $4 local.get $4 if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne + i32.eq if - i32.const 0 + local.get $2 return end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - i32.const 1 + i32.const -1 ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 local.get $0 i32.load offset=12 - local.set $5 + local.set $3 + local.get $3 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $2 + local.get $3 + i32.ge_s + end + if + i32.const -1 + return + end local.get $2 i32.const 0 i32.lt_s - if (result i32) - local.get $5 + if + local.get $3 local.get $2 i32.add - local.tee $6 + local.tee $4 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select - else - local.get $2 - local.tee $7 - local.get $5 - local.tee $6 - local.get $7 - local.get $6 + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $6 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_s - select + local.set $4 + local.get $4 + if + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + if + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end - local.set $2 + i32.const -1 + ) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $3 i32.const 0 - i32.lt_s + i32.eq if (result i32) - local.get $5 + i32.const 1 + else + local.get $2 + local.get $3 + i32.ge_s + end + if + i32.const -1 + return + end + local.get $2 + i32.const 0 + i32.lt_s + if local.get $3 + local.get $2 i32.add - local.tee $6 + local.tee $4 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $7 + local.tee $5 + local.get $4 local.get $5 - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s + i32.gt_s select + local.set $2 end - local.set $3 - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - loop $for-loop|0 + local.get $0 + i32.load offset=4 + local.set $6 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s - local.set $7 - local.get $7 + local.set $4 + local.get $4 if - local.get $4 + local.get $6 local.get $2 - i32.const 2 + i32.const 3 i32.shl i32.add + f64.load local.get $1 - i32.store + f64.eq + if + local.get $2 + return + end local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 + i32.const -1 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.load offset=12 - i32.ge_u + local.set $3 + local.get $3 + i32.const 0 + i32.eq if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const -1 + return end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) local.get $2 - i32.eqz + i32.const 0 + i32.lt_s if - local.get $0 - call $~lib/array/Array#get:length + local.get $3 + local.get $2 + i32.add local.set $2 + else local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq + local.get $3 + i32.ge_s if + local.get $3 i32.const 1 - return + i32.sub + local.set $2 end end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 + local.get $0 + i32.load offset=4 + local.set $4 + loop $while-continue|0 local.get $2 - i32.lt_s - local.set $4 - local.get $4 + i32.const 0 + i32.ge_s + local.set $5 + local.get $5 if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne + i32.eq if - i32.const 0 + local.get $2 return end - local.get $3 + local.get $2 i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.sub + local.set $2 + br $while-continue|0 end end - i32.const 1 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtSize + ) + (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 $0 - return + i32.load offset=12 + local.set $2 end + local.get $0 local.get $1 local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + call $~lib/array/Array#lastIndexOf + ) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + drop local.get $0 local.get $1 - local.tee $4 local.get $2 - i32.load offset=16 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_u - select - call $~lib/memory/memory.copy - local.get $3 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + return ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/array/Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $6 f32) + i32.const 1 + drop local.get $0 - i32.load offset=8 - local.set $4 - local.get $1 - local.get $4 + i32.load offset=12 + local.set $3 + local.get $3 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $2 + local.get $3 + i32.ge_s + end + if + i32.const 0 + return + end local.get $2 - i32.shr_u - i32.gt_u + i32.const 0 + i32.lt_s if - local.get $1 - i32.const 1073741820 + local.get $3 local.get $2 - 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 $0 - i32.load - local.set $5 - local.get $1 - local.tee $6 - i32.const 8 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $4 + loop $while-continue|0 local.get $2 - i32.shl - local.set $6 local.get $3 + i32.lt_s + local.set $5 + local.get $5 if local.get $4 - i32.const 1 + local.get $2 + i32.const 2 i32.shl - local.tee $7 - i32.const 1073741820 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_u - select - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.gt_u - select + i32.add + f32.load local.set $6 + local.get $6 + local.get $1 + f32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $6 + f32.ne + local.get $1 + local.get $1 + f32.ne + i32.and + end + if + i32.const 1 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end - local.get $5 - local.get $6 - call $~lib/rt/itcms/__renew - local.set $8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $8 - local.get $5 - i32.ne - if - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - i32.store offset=4 - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=8 end + i32.const 0 + return ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + i32.const 1 + drop local.get $0 i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add local.set $3 - local.get $0 local.get $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.eq + if (result i32) + i32.const 1 + else + local.get $2 + local.get $3 + i32.ge_s + end if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const 0 + return end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - i32.const 0 - drop local.get $2 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 + i32.const 0 i32.lt_s if - i32.const 1152 - i32.const 80 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $3 + local.get $2 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $2 + end local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $2 + i32.load offset=4 + local.set $4 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + local.get $6 + local.get $1 + f64.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $6 + f64.ne + local.get $1 + local.get $1 + f64.ne + i32.and + end + if + i32.const 1 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + return ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -4763,1261 +4461,1069 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $1 - i32.const 0 - local.get $2 - local.get $1 - i32.const 0 - i32.ge_s - select - i32.add - local.set $1 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - i32.load - local.set $3 + local.get $2 + i32.store i32.const 0 drop - local.get $3 ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - i32.load offset=4 - local.set $4 + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 local.get $0 i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 + i32.ge_u + if local.get $1 - i32.add - local.tee $7 i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 + if + i32.const 320 + i32.const 80 + 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 $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select + call $~lib/array/Array#set:length_ end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $7 - local.get $5 - local.get $8 - i32.sub - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - local.set $11 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.eq ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - end + (local $5 i32) i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 local.set $3 loop $for-loop|0 - local.get $3 local.get $2 + local.get $3 + local.tee $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select i32.lt_s local.set $4 local.get $4 if - i32.const 0 - drop local.get $0 - local.get $3 - call $~lib/array/Array#__get + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) if - i32.const 0 + local.get $2 return end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - i32.const 1 + i32.const -1 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 i32.const 1 - i32.add - local.set $2 + i32.eq + ) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|4 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - i32.const 0 + call $~lib/array/Array#pop drop local.get $0 - local.get $2 - call $~lib/array/Array#set:length_ - local.get $2 + i32.const 100 + i32.eq ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) + (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.eq + ) + (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 i32.load offset=12 - local.set $1 - local.get $1 i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + local.set $3 + local.get $3 + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end end + i32.const -1 + ) + (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $1 i32.const 1 - i32.sub - local.set $4 - local.get $2 + i32.eq + ) + (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.const 4 - i32.add - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 + call $~lib/array/Array#pop drop - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store local.get $0 - local.get $4 - call $~lib/array/Array#set:length_ - local.get $3 + i32.const 100 + i32.eq ) - (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.ge_s + ) + (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 0 - i32.const 1 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|0 + select + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + i32.load offset=4 local.get $2 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 - local.get $6 - local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.const 0 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end + i32.const 1 ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 + i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 10 + i32.lt_s ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - i32.const 1 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq + (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop drop local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 + i32.const 3 + i32.lt_s + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return + i32.const 3 + i32.ge_s ) - (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 0 - i32.const 1 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $1 - i32.const 8 - i32.sub - local.set $3 - loop $while-continue|0 + select + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + i32.load offset=4 local.get $2 - i32.const 7 + i32.const 2 + i32.shl i32.add - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - i32.add - local.set $6 - local.get $0 - local.get $3 - i32.add - local.get $2 - i32.sub - local.set $7 - local.get $6 - i64.load - call $~lib/polyfills/bswap - local.set $8 - local.get $6 - local.get $7 - i64.load - call $~lib/polyfills/bswap - i64.store - local.get $7 - local.get $8 - i64.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const 1 - i32.const 2 - i32.eq - drop - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 + i32.load local.get $2 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $0 - local.get $2 - i32.const 0 - i32.shl - i32.add - local.set $9 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 0 - i32.shl - i32.add - local.set $10 - local.get $9 - i32.load8_u - local.set $11 - local.get $9 - local.get $10 - i32.load8_u - i32.store8 - local.get $10 - local.get $11 - i32.store8 - local.get $2 i32.const 1 - i32.add - local.set $2 - br $while-continue|1 + return end - end - end - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE - local.get $0 - ) - (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $1 - i32.const 2 - i32.sub - local.set $3 - loop $while-continue|0 local.get $2 i32.const 1 i32.add - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $7 - local.get $7 - i32.load - i32.const 16 - i32.rotr - local.set $8 - local.get $7 - local.get $6 - i32.load - i32.const 16 - i32.rotr - i32.store - local.get $6 - local.get $8 - i32.store - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $2 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $9 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $10 - local.get $9 - i32.load16_u - local.set $11 - local.get $9 - local.get $10 - i32.load16_u - i32.store16 - local.get $10 - local.get $11 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end + local.set $2 + br $for-loop|0 end end + i32.const 0 ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE + i32.const -1 + i32.le_s + ) + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 + i32.const 10 + i32.gt_s ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 + i32.const 10 + i32.gt_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop + drop local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + i32.gt_s + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $2 - i32.const 0 - drop - local.get $2 + global.set $std/array/i ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else + loop $for-loop|0 local.get $2 local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add local.tee $4 - i32.const 0 + local.get $0 + i32.load offset=12 local.tee $5 local.get $4 local.get $5 - i32.gt_s + i32.lt_s select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 i32.lt_s local.set $4 local.get $4 if - local.get $6 + local.get $0 + i32.load offset=4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - i32.const -1 ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 + local.get $1 i32.const 0 i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s + if + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + i32.const 100 + local.get $3 + i32.add + call $~lib/array/Array#push + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + i32.const 200 + i32.add + call $~lib/array/Array#push + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 + end + end end + local.get $1 + i32.const 2 + i32.eq if - i32.const -1 - return + local.get $0 + i32.const 202 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 735 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + f32.convert_i32_s + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $2 + local.set $3 i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 local.get $4 local.get $5 - i32.gt_s + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 i32.lt_s - local.set $4 - local.get $4 + local.set $6 + local.get $6 if - local.get $6 - local.get $2 + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 i32.const 2 i32.shl i32.add - f32.load + i32.load + local.get $4 + local.get $0 + i32.const 4 + global.set $~argumentsLength local.get $1 - f32.eq - if - local.get $2 - return - end - local.get $2 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $4 + br $for-loop|0 end end - i32.const -1 + local.get $3 ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq if (result i32) i32.const 1 else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return + local.get $1 + i32.const 2 + i32.gt_s end + ) + (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $2 + local.set $3 i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 local.get $4 local.get $5 - i32.gt_s + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 i32.lt_s - local.set $4 - local.get $4 + local.set $6 + local.get $6 if - local.get $6 - local.get $2 - i32.const 3 + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 + i32.const 2 i32.shl i32.add - f64.load + i32.load + local.get $4 + local.get $0 + i32.const 4 + global.set $~argumentsLength local.get $1 - f64.eq - if - local.get $2 - return - end - local.get $2 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $4 + br $for-loop|0 end end - i32.const -1 + local.get $3 ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 100 + i32.gt_s + end + ) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + i32.const 1 + call $~lib/array/Array#push + drop + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|39 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + call $~lib/array/Array#pop + drop + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - return - end local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end + local.set $3 local.get $0 - i32.load offset=4 + i32.load offset=12 + i32.const 1 + i32.sub local.set $4 - loop $while-continue|0 - local.get $2 + loop $for-loop|0 + local.get $4 i32.const 0 i32.ge_s local.set $5 local.get $5 if + local.get $3 + local.get $0 + i32.load offset=4 local.get $4 - local.get $2 i32.const 2 i32.shl i32.add i32.load + local.get $4 + local.get $0 + i32.const 4 + global.set $~argumentsLength local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $4 + br $for-loop|0 end - local.get $0 - i32.load offset=12 - local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf + local.get $3 ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop + (func $start:std/array~anonymous|41 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return + i32.add ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - i32.const 1 - drop + (func $start:std/array~anonymous|42 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq if (result i32) i32.const 1 else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const 0 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 + i32.const 2 i32.gt_s - select - local.set $2 end + ) + (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.set $3 local.get $0 - i32.load offset=4 + i32.load offset=12 + i32.const 1 + i32.sub local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.ge_s local.set $5 local.get $5 if + local.get $3 + local.get $0 + i32.load offset=4 local.get $4 - local.get $2 i32.const 2 i32.shl i32.add - f32.load - local.set $6 - local.get $6 + i32.load + local.get $4 + local.get $0 + i32.const 4 + global.set $~argumentsLength local.get $1 - f32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $6 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.and - end - if - i32.const 1 - return - end - local.get $2 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.sub + local.set $4 + br $for-loop|0 end end - i32.const 0 - return + local.get $3 ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - i32.const 1 - drop + (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq if (result i32) i32.const 1 else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const 0 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 + i32.const 100 i32.gt_s - select - local.set $2 end + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + i32.const 1 + call $~lib/array/Array#push + drop local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $6 - local.get $1 - f64.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $6 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.and - end - if - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const 0 - return + local.get $1 + i32.add ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl i32.add - local.get $2 - i32.store - i32.const 1 + ) + (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + call $~lib/array/Array#pop drop local.get $0 - local.get $2 + local.get $1 + i32.add + ) + (func $~lib/math/murmurHash3 (param $0 i64) (result i64) + local.get $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + i64.const -49064778989728563 + i64.mul + local.set $0 + local.get $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + i64.const -4265267296055464877 + i64.mul + local.set $0 + local.get $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + ) + (func $~lib/math/splitMix32 (param $0 i32) (result i32) + local.get $0 + i32.const 1831565813 + i32.add + local.set $0 + local.get $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + local.get $0 i32.const 1 - call $~lib/rt/itcms/__link + i32.or + i32.mul + local.set $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + i32.const 7 + i32.shr_u + i32.xor + local.get $0 + i32.const 61 + i32.or + i32.mul + i32.add + i32.xor + local.set $0 + local.get $0 + local.get $0 + i32.const 14 + i32.shr_u + i32.xor ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + local.get $0 + i64.const 0 + i64.eq + if + i64.const -7046029254386353131 + local.set $0 + end + local.get $0 + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state1_64 + local.get $0 + i32.wrap_i64 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded + ) + (func $std/array/Dim#set:height (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + i32.store ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $std/array/Dim#set:width (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 + local.get $1 + i32.store offset=4 ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6026,1135 +5532,1155 @@ i32.add local.get $2 i32.store - i32.const 0 + i32.const 1 drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.eq + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 f32) + (local $10 f32) + (local $11 f32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 + local.get $6 local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - i32.load offset=4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add - i32.load - local.get $2 + f32.load + local.set $8 local.get $0 - i32.const 3 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $4 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s if - local.get $2 - return + local.get $8 + local.set $10 + local.get $9 + local.set $11 end - local.get $2 + local.get $6 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|4 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 100 - i32.eq + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + f32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f32) + local.get $1 local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 100 i32.eq - ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + if + local.get $1 + return + end + local.get $1 + local.set $4 local.get $0 - i32.const 0 - i32.eq - ) - (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load local.get $0 - i32.load offset=12 + local.get $4 i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $3 - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $5 + i32.lt_s + local.set $6 + local.get $6 if - local.get $2 - return + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 end + end + else + loop $while-continue|2 + local.get $4 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - i32.const -1 + local.get $4 ) - (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + local.get $1 local.get $0 + i32.sub i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.add + i64.extend_i32_u + local.set $5 + local.get $3 local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 1 + i32.shl + i32.sub + local.set $6 local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.ge_s + local.get $6 + i32.add + local.set $7 + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + local.set $8 + local.get $7 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $9 + local.get $8 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $10 + local.get $9 + local.get $10 + i64.xor + i32.wrap_i64 + i32.clz ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 f32) + local.get $2 + i32.const 1 + i32.sub local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 + local.get $3 + local.get $2 + i32.add + local.set $8 + local.get $2 + i32.const 1 + i32.add + local.set $6 loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $1 + i32.gt_s + local.set $9 + local.get $9 if - local.get $0 - i32.load offset=4 - local.get $2 + local.get $4 + local.get $6 + i32.const 1 + i32.sub i32.const 2 i32.shl i32.add - i32.load - local.get $2 local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - return - end - local.get $2 + local.get $6 i32.const 1 + i32.sub + i32.const 2 + i32.shl i32.add - local.set $2 + f32.load + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 br $for-loop|0 end end - i32.const 1 - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.le_s - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.lt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.ge_s - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select i32.lt_s - local.set $4 - local.get $4 + local.set $9 + local.get $9 if - local.get $0 - i32.load offset=4 - local.get $2 + local.get $4 + local.get $8 + local.get $7 + i32.sub i32.const 2 i32.shl i32.add - i32.load - local.get $2 local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - return - end - local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $7 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $7 + br $for-loop|1 end end - i32.const 0 - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const -1 - i32.le_s - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.gt_s - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 + local.get $1 + local.set $9 + loop $for-loop|2 + local.get $9 local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 + i32.le_s + local.set $10 + local.get $10 if - local.get $0 - i32.load offset=4 - local.get $2 + local.get $4 + local.get $7 i32.const 2 i32.shl i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 + f32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $5 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $9 + br $for-loop|2 end end ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - ) - (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) + (local $5 f32) + (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.get $1 - i32.const 0 - i32.eq + i32.const 48 + i32.le_s if - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 4 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + local.get $1 + i32.const 1 + i32.le_s + if + return end i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $1 + 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 $0 + f32.load + local.set $4 + local.get $0 + f32.load offset=4 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength local.get $2 - i32.const 100 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + local.set $3 + local.get $0 + local.get $5 + local.get $4 local.get $3 - i32.add - call $~lib/array/Array#push - drop + select + f32.store + local.get $4 + local.get $5 local.get $3 - i32.const 1 - i32.add + select + local.set $4 + local.get $0 + f32.load offset=8 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s local.set $3 - br $for-loop|1 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f32.store offset=4 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store offset=8 end - end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 100 - i32.lt_s + local.get $0 + f32.load + local.set $5 + local.get $0 + f32.load offset=4 local.set $4 + local.get $5 local.get $4 - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + local.set $3 + local.get $0 + local.get $4 + local.get $5 local.get $3 - i32.const 100 - i32.lt_s - local.set $4 + select + f32.store + local.get $0 + local.get $5 local.get $4 - if - local.get $2 - local.get $3 - i32.const 200 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end + local.get $3 + select + f32.store offset=4 + return end + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return end local.get $1 + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub i32.const 2 - i32.eq - if - local.get $0 - i32.const 202 - i32.eq - i32.eqz + i32.add + local.set $6 + local.get $6 + i32.const 2 + i32.shl + local.set $7 + local.get $7 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $8 + local.get $7 + i32.add + local.set $9 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $6 + i32.lt_u + local.set $10 + local.get $10 if - i32.const 0 - i32.const 528 - i32.const 735 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $8 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end end - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - f32.convert_i32_s - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 local.get $1 i32.const 2 i32.shl - i32.add - f32.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + call $~lib/rt/tlsf/__alloc + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + local.get $12 local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i - local.get $0 + call $~lib/util/sort/extendRunRight + local.set $13 + local.get $13 + i32.const 1 i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - local.set $3 - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 + local.set $14 + local.get $14 + i32.const 32 + i32.lt_s + if + local.get $12 + local.tee $10 + i32.const 32 + i32.const 1 + i32.sub + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select + local.set $13 + local.get $0 + i32.const 0 + local.get $13 + local.get $14 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 + loop $while-continue|2 + local.get $13 + local.get $12 i32.lt_s - local.set $6 - local.get $6 + local.set $10 + local.get $10 if - local.get $3 + local.get $13 + i32.const 1 + i32.add + local.set $3 local.get $0 - i32.load offset=4 - local.get $4 + local.get $3 + local.get $12 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $17 + local.get $17 + local.get $3 + i32.sub + i32.const 1 + i32.add + local.set $18 + local.get $18 + i32.const 32 + i32.lt_s + if + local.get $12 + local.tee $19 + local.get $3 + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $20 + local.get $19 + local.get $20 + i32.lt_s + select + local.set $17 + local.get $0 + local.get $3 + local.get $17 + local.get $18 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $12 + local.get $16 + local.get $3 + local.get $17 + call $~lib/util/sort/nodePower + local.set $19 + local.get $15 + local.set $20 + loop $for-loop|3 + local.get $20 + local.get $19 + i32.gt_u + local.set $21 + local.get $21 + if + local.get $8 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + i32.const -1 + i32.ne + if + local.get $0 + local.get $22 + local.get $9 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $22 + local.set $16 + local.get $8 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $20 + i32.const 1 + i32.sub + local.set $20 + br $for-loop|3 + end + end + local.get $8 + local.get $19 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store + local.get $9 + local.get $19 + i32.const 2 + i32.shl + i32.add + local.get $13 + i32.store + local.get $3 + local.set $16 + local.get $17 + local.set $13 + local.get $19 + local.set $15 + br $while-continue|2 + end + end + local.get $15 + local.set $10 + loop $for-loop|4 + local.get $10 + i32.const 0 + i32.ne + local.set $20 + local.get $20 + if + local.get $8 + local.get $10 i32.const 2 i32.shl i32.add i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 + local.set $21 + local.get $21 + i32.const -1 + i32.ne + if + local.get $0 + local.get $21 + local.get $9 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $12 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $10 i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.sub + local.set $10 + br $for-loop|4 end end - local.get $3 + local.get $11 + call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) - (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $0 + i32.load offset=12 local.get $1 - i32.add + call $~lib/util/sort/SORT + local.get $0 ) - (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end + i32.reinterpret_f32 + local.set $2 + local.get $1 + i32.reinterpret_f32 + local.set $3 + local.get $2 + local.get $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $2 + local.get $3 + local.get $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $3 + local.get $2 + local.get $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $5 f32) local.get $2 - local.set $3 + i32.eqz + if + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + end i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select + local.get $3 + local.get $2 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if + block $for-continue|0 + i32.const 1 + drop + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + if (result i32) + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + f32.ne + if + i32.const 0 + return + end + end local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $3 - ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end + i32.const 1 ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) + i32.const 0 i32.const 1 - call $~lib/array/Array#push + i32.ge_s drop - local.get $0 + local.get $2 local.get $1 + i32.sub + i32.const 1 i32.add - ) - (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 + local.set $5 local.get $1 - i32.add - ) - (func $start:std/array~anonymous|39 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $5 + i32.const 1 + i32.and local.get $3 - call $~lib/array/Array#pop - drop - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.set $3 - local.get $0 - i32.load offset=12 + local.get $5 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if - local.get $3 local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 + local.get $6 + i32.const 3 i32.shl i32.add - i32.load - local.get $4 + f64.load + local.set $8 local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $3 - ) - (func $start:std/array~anonymous|41 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/array~anonymous|42 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.set $3 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $3 - ) - (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/array/Array#pop - drop - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -49064778989728563 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -4265267296055464877 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.set $0 - local.get $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.set $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - local.get $0 - i32.const 61 - i32.or - i32.mul - i32.add - i32.xor - local.set $0 - local.get $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - local.get $0 - i64.const 0 - i64.eq - if - i64.const -7046029254386353131 - local.set $0 - end - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - i32.const 1 - global.set $~lib/math/random_seeded - ) - (func $std/array/Dim#set:height (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $std/array/Dim#set:width (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 i32) - (local $13 i32) - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.set $5 - local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $3 - i32.const 0 - i32.eq - select - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $2 - i32.le_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $8 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.set $9 - local.get $9 - local.set $10 - local.get $8 - local.set $11 - local.get $8 - local.get $9 - i32.const 2 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.le_s if @@ -7177,10 +6703,10 @@ if local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $8 local.get $8 local.get $11 @@ -7188,17 +6714,17 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s if local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $8 - f32.store offset=8 + f64.store offset=16 local.get $12 i32.const 1 i32.sub @@ -7212,11 +6738,11 @@ end local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $11 - f32.store offset=8 + f64.store offset=16 block $while-break|2 loop $while-continue|2 local.get $12 @@ -7227,10 +6753,10 @@ if local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $8 local.get $8 local.get $10 @@ -7238,17 +6764,17 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s if local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $8 - f32.store offset=4 + f64.store offset=8 local.get $12 i32.const 1 i32.sub @@ -7262,11 +6788,11 @@ end local.get $0 local.get $12 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $10 - f32.store offset=4 + f64.store offset=8 local.get $6 i32.const 2 i32.add @@ -7275,11 +6801,11 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 f64) local.get $1 local.get $2 i32.eq @@ -7291,24 +6817,24 @@ local.set $4 local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.get $0 local.get $4 i32.const 1 i32.add local.tee $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s if @@ -7319,21 +6845,21 @@ if (result i32) local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load offset=4 + f64.load offset=8 local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u else @@ -7360,34 +6886,34 @@ if local.get $0 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $7 local.get $0 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $0 local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load - f32.store + f64.load + f64.store local.get $1 i32.const 1 i32.add local.set $1 local.get $0 local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $7 - f32.store + f64.store local.get $5 i32.const 1 i32.sub @@ -7403,21 +6929,21 @@ if (result i32) local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load offset=4 + f64.load offset=8 local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s else @@ -7436,64 +6962,14 @@ end local.get $4 ) - (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - local.get $1 - local.get $0 - i32.sub - i32.const 1 - i32.add - i64.extend_i32_u - local.set $5 - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.sub - local.set $6 - local.get $2 - local.get $6 - i32.add - local.set $7 - local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.add - local.set $8 - local.get $7 - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $5 - i64.div_u - local.set $9 - local.get $8 - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $5 - i64.div_u - local.set $10 - local.get $9 - local.get $10 - i64.xor - i32.wrap_i64 - i32.clz - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 f32) + (local $11 f64) + (local $12 f64) local.get $2 i32.const 1 i32.sub @@ -7517,18 +6993,18 @@ local.get $6 i32.const 1 i32.sub - i32.const 2 + i32.const 3 i32.shl i32.add local.get $0 local.get $6 i32.const 1 i32.sub - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load - f32.store + f64.load + f64.store local.get $6 i32.const 1 i32.sub @@ -7549,16 +7025,16 @@ local.get $8 local.get $7 i32.sub - i32.const 2 + i32.const 3 i32.shl i32.add local.get $0 local.get $7 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load offset=4 - f32.store + f64.load offset=8 + f64.store local.get $7 i32.const 1 i32.add @@ -7577,17 +7053,17 @@ if local.get $4 local.get $7 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $11 local.get $4 local.get $6 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $12 local.get $11 local.get $12 @@ -7595,17 +7071,17 @@ global.set $~argumentsLength local.get $5 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if local.get $0 local.get $9 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $11 - f32.store + f64.store local.get $7 i32.const 1 i32.sub @@ -7613,11 +7089,11 @@ else local.get $0 local.get $9 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $12 - f32.store + f64.store local.get $6 i32.const 1 i32.add @@ -7631,10 +7107,10 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f32) - (local $5 f32) + (local $4 f64) + (local $5 f64) (local $6 i32) (local $7 i32) (local $8 i32) @@ -7682,10 +7158,10 @@ br $break|0 end local.get $0 - f32.load + f64.load local.set $4 local.get $0 - f32.load offset=4 + f64.load offset=8 local.set $5 local.get $4 local.get $5 @@ -7693,7 +7169,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s local.set $3 @@ -7702,14 +7178,14 @@ local.get $4 local.get $3 select - f32.store + f64.store local.get $4 local.get $5 local.get $3 select local.set $4 local.get $0 - f32.load offset=8 + f64.load offset=16 local.set $5 local.get $4 local.get $5 @@ -7717,7 +7193,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s local.set $3 @@ -7726,19 +7202,19 @@ local.get $4 local.get $3 select - f32.store offset=4 + f64.store offset=8 local.get $0 local.get $4 local.get $5 local.get $3 select - f32.store offset=8 + f64.store offset=16 end local.get $0 - f32.load + f64.load local.set $5 local.get $0 - f32.load offset=4 + f64.load offset=8 local.set $4 local.get $5 local.get $4 @@ -7746,7 +7222,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s local.set $3 @@ -7755,13 +7231,13 @@ local.get $5 local.get $3 select - f32.store + f64.store local.get $0 local.get $5 local.get $4 local.get $3 select - f32.store offset=4 + f64.store offset=8 return end local.get $0 @@ -7771,7 +7247,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end local.get $1 @@ -7820,7 +7296,7 @@ end end local.get $1 - i32.const 2 + i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc local.set $11 @@ -7832,7 +7308,7 @@ i32.const 0 local.get $12 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $13 local.get $13 i32.const 1 @@ -7858,7 +7334,7 @@ local.get $13 local.get $14 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $15 @@ -7879,7 +7355,7 @@ local.get $3 local.get $12 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $17 local.get $17 local.get $3 @@ -7909,7 +7385,7 @@ local.get $17 local.get $18 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $12 @@ -7951,7 +7427,7 @@ local.get $13 local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $22 local.set $16 local.get $8 @@ -8025,7 +7501,7 @@ local.get $12 local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $10 i32.const 1 @@ -8039,61 +7515,91 @@ local.get $8 call $~lib/rt/tlsf/__free ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) local.get $0 - i32.reinterpret_f32 + i64.reinterpret_f64 local.set $2 local.get $1 - i32.reinterpret_f32 + i64.reinterpret_f64 local.set $3 local.get $2 local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor local.set $2 local.get $3 local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor local.set $3 local.get $2 local.get $3 - i32.gt_s + i64.gt_s local.get $2 local.get $3 - i32.lt_s + i64.lt_s i32.sub ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 f64) local.get $2 i32.eqz if local.get $0 - call $~lib/array/Array#get:length + call $~lib/array/Array#get:length local.set $2 local.get $2 local.get $1 - call $~lib/array/Array#get:length + call $~lib/array/Array#get:length i32.ne if i32.const 0 @@ -8121,17 +7627,17 @@ drop local.get $0 local.get $3 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.tee $5 local.get $5 - f32.ne + f64.ne if (result i32) local.get $1 local.get $3 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.tee $5 local.get $5 - f32.ne + f64.ne else i32.const 0 end @@ -8140,11 +7646,11 @@ end local.get $0 local.get $3 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.get $1 local.get $3 - call $~lib/array/Array#__get - f32.ne + call $~lib/array/Array#__get + f64.ne if i32.const 0 return @@ -8159,14 +7665,14 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) (local $13 i32) i32.const 0 @@ -8205,17 +7711,17 @@ if local.get $0 local.get $6 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $8 local.get $0 local.get $6 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load offset=8 + i32.load offset=4 local.set $9 local.get $9 local.set $10 @@ -8227,7 +7733,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s if @@ -8250,10 +7756,10 @@ if local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $8 local.get $8 local.get $11 @@ -8261,17 +7767,17 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $8 - f64.store offset=16 + i32.store offset=8 local.get $12 i32.const 1 i32.sub @@ -8285,11 +7791,11 @@ end local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $11 - f64.store offset=16 + i32.store offset=8 block $while-break|2 loop $while-continue|2 local.get $12 @@ -8300,10 +7806,10 @@ if local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $8 local.get $8 local.get $10 @@ -8311,17 +7817,17 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $8 - f64.store offset=8 + i32.store offset=4 local.get $12 i32.const 1 i32.sub @@ -8335,11 +7841,11 @@ end local.get $0 local.get $12 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $10 - f64.store offset=8 + i32.store offset=4 local.get $6 i32.const 2 i32.add @@ -8348,11 +7854,11 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) local.get $1 local.get $2 i32.eq @@ -8364,24 +7870,24 @@ local.set $4 local.get $0 local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.get $0 local.get $4 i32.const 1 i32.add local.tee $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -8392,21 +7898,21 @@ if (result i32) local.get $0 local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load offset=8 + i32.load offset=4 local.get $0 local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u else @@ -8433,34 +7939,34 @@ if local.get $0 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $7 local.get $0 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $0 local.get $5 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - f64.store + i32.load + i32.store local.get $1 i32.const 1 i32.add local.set $1 local.get $0 local.get $5 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $7 - f64.store + i32.store local.get $5 i32.const 1 i32.sub @@ -8476,21 +7982,21 @@ if (result i32) local.get $0 local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load offset=8 + i32.load offset=4 local.get $0 local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s else @@ -8509,14 +8015,14 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f64) - (local $12 f64) + (local $11 i32) + (local $12 i32) local.get $2 i32.const 1 i32.sub @@ -8540,18 +8046,18 @@ local.get $6 i32.const 1 i32.sub - i32.const 3 + i32.const 2 i32.shl i32.add local.get $0 local.get $6 i32.const 1 i32.sub - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - f64.store + i32.load + i32.store local.get $6 i32.const 1 i32.sub @@ -8572,16 +8078,16 @@ local.get $8 local.get $7 i32.sub - i32.const 3 + i32.const 2 i32.shl i32.add local.get $0 local.get $7 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load offset=8 - f64.store + i32.load offset=4 + i32.store local.get $7 i32.const 1 i32.add @@ -8600,17 +8106,17 @@ if local.get $4 local.get $7 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $11 local.get $4 local.get $6 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + i32.load local.set $12 local.get $11 local.get $12 @@ -8618,17 +8124,17 @@ global.set $~argumentsLength local.get $5 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if local.get $0 local.get $9 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $11 - f64.store + i32.store local.get $7 i32.const 1 i32.sub @@ -8636,11 +8142,11 @@ else local.get $0 local.get $9 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $12 - f64.store + i32.store local.get $6 i32.const 1 i32.add @@ -8654,10 +8160,10 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -8673,8 +8179,6 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - (local $22 i32) local.get $1 i32.const 48 i32.le_s @@ -8705,63 +8209,63 @@ br $break|0 end local.get $0 - f64.load - local.set $4 + i32.load + local.set $3 local.get $0 - f64.load offset=8 - local.set $5 + i32.load offset=4 + local.set $4 + local.get $3 local.get $4 - local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $3 + local.set $5 local.get $0 - local.get $5 local.get $4 local.get $3 + local.get $5 select - f64.store + i32.store + local.get $3 local.get $4 local.get $5 - local.get $3 select - local.set $4 + local.set $3 local.get $0 - f64.load offset=16 - local.set $5 + i32.load offset=8 + local.set $4 + local.get $3 local.get $4 - local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $3 + local.set $5 local.get $0 - local.get $5 local.get $4 local.get $3 + local.get $5 select - f64.store offset=8 + i32.store offset=4 local.get $0 + local.get $3 local.get $4 local.get $5 - local.get $3 select - f64.store offset=16 + i32.store offset=8 end local.get $0 - f64.load + i32.load local.set $5 local.get $0 - f64.load offset=8 + i32.load offset=4 local.set $4 local.get $5 local.get $4 @@ -8769,7 +8273,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s local.set $3 @@ -8778,13 +8282,13 @@ local.get $5 local.get $3 select - f64.store + i32.store local.get $0 local.get $5 local.get $4 local.get $3 select - f64.store offset=8 + i32.store offset=4 return end local.get $0 @@ -8794,13 +8298,13 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end local.get $1 - local.set $3 + local.set $5 i32.const 31 - local.get $3 + local.get $5 i32.clz i32.sub i32.const 2 @@ -8820,424 +8324,288 @@ i32.add local.set $9 i32.const 0 - local.set $3 + local.set $5 loop $for-loop|1 - local.get $3 + local.get $5 local.get $6 i32.lt_u - local.set $10 - local.get $10 + local.set $3 + local.get $3 if local.get $8 - local.get $3 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|1 end end local.get $1 - i32.const 3 + i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $11 + local.set $10 local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight - local.set $13 - local.get $13 + call $~lib/util/sort/extendRunRight + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $14 - local.get $14 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $12 - local.tee $10 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $3 - local.get $10 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $13 + local.set $12 local.get $0 i32.const 0 + local.get $12 local.get $13 - local.get $14 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 - local.set $15 + local.set $14 i32.const 0 - local.set $16 + local.set $15 loop $while-continue|2 - local.get $13 local.get $12 + local.get $11 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - local.get $13 + local.get $12 i32.const 1 i32.add - local.set $3 + local.set $5 local.get $0 - local.get $3 - local.get $12 + local.get $5 + local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight - local.set $17 - local.get $17 + call $~lib/util/sort/extendRunRight + local.set $3 local.get $3 + local.get $5 i32.sub i32.const 1 i32.add - local.set $18 - local.get $18 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $12 - local.tee $19 - local.get $3 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $20 - local.get $19 - local.get $20 + local.tee $18 + local.get $17 + local.get $18 i32.lt_s select - local.set $17 + local.set $3 local.get $0 + local.get $5 local.get $3 - local.get $17 - local.get $18 + local.get $16 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 - local.get $12 - local.get $16 + local.get $11 + local.get $15 + local.get $5 local.get $3 - local.get $17 call $~lib/util/sort/nodePower - local.set $19 - local.get $15 - local.set $20 + local.set $17 + local.get $14 + local.set $18 loop $for-loop|3 - local.get $20 - local.get $19 + local.get $18 + local.get $17 i32.gt_u - local.set $21 - local.get $21 + local.set $19 + local.get $19 if local.get $8 - local.get $20 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $9 local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $11 + local.get $12 + local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns - local.get $22 - local.set $16 - local.get $8 + call $~lib/util/sort/mergeRuns local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $20 + local.get $18 i32.const 1 i32.sub - local.set $20 + local.set $18 br $for-loop|3 end end local.get $8 - local.get $19 + local.get $17 i32.const 2 i32.shl i32.add - local.get $16 + local.get $15 i32.store local.get $9 - local.get $19 + local.get $17 i32.const 2 i32.shl i32.add - local.get $13 + local.get $12 i32.store + local.get $5 + local.set $15 local.get $3 - local.set $16 + local.set $12 local.get $17 - local.set $13 - local.get $19 - local.set $15 + local.set $14 br $while-continue|2 end end - local.get $15 - local.set $10 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $10 + local.get $4 i32.const 0 i32.ne - local.set $20 - local.get $20 + local.set $18 + local.get $18 if local.get $8 - local.get $10 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $21 + local.get $19 local.get $9 - local.get $10 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 local.get $11 + local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end - local.get $10 + local.get $4 i32.const 1 i32.sub - local.set $10 + local.set $4 br $for-loop|4 end end - local.get $11 + local.get $10 call $~lib/rt/tlsf/__free local.get $8 call $~lib/rt/tlsf/__free ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i64.reinterpret_f64 - local.set $2 local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and local.get $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $3 - local.get $2 - local.get $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - block $for-continue|0 - i32.const 1 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - if (result i32) - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f64.ne - if - i32.const 0 - return - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.set $5 - local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.get $5 local.get $3 i32.sub i32.const 1 @@ -9401,7 +8769,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -9562,7 +8930,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -9707,7 +9075,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9845,7 +9213,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end local.get $1 @@ -9906,7 +9274,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $12 local.get $12 i32.const 1 @@ -9932,7 +9300,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $14 @@ -9953,7 +9321,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $3 local.get $3 local.get $5 @@ -9983,7 +9351,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $11 @@ -10025,7 +9393,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $20 local.set $15 local.get $8 @@ -10099,7 +9467,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -10113,21 +9481,133 @@ local.get $8 call $~lib/rt/tlsf/__free ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + (local $2 i64) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $0 + global.get $~lib/math/random_state1_64 + local.set $1 + local.get $1 + global.set $~lib/math/random_state0_64 + local.get $0 + local.get $0 + i64.const 23 + i64.shl + i64.xor + local.set $0 + local.get $0 + local.get $0 + i64.const 17 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + local.get $1 + i64.xor + local.set $0 + local.get $0 + local.get $1 + i64.const 26 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + global.set $~lib/math/random_state1_64 + local.get $1 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + local.set $2 + local.get $2 + f64.reinterpret_i64 + f64.const 1 + f64.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $0 + local.get $2 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -10137,6 +9617,14 @@ (local $11 i32) (local $12 i32) (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.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.const 1 i32.ge_s @@ -10171,20 +9659,24 @@ local.set $7 local.get $7 if + global.get $~lib/memory/__stack_pointer local.get $0 local.get $6 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 local.get $6 i32.const 2 i32.shl i32.add i32.load offset=4 - local.set $9 + local.tee $9 + i32.store offset=4 local.get $9 local.set $10 local.get $8 @@ -10216,13 +9708,15 @@ local.set $13 local.get $13 if + global.get $~lib/memory/__stack_pointer local.get $0 local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.tee $8 + i32.store local.get $8 local.get $11 i32.const 2 @@ -10266,13 +9760,15 @@ local.set $13 local.get $13 if + global.get $~lib/memory/__stack_pointer local.get $0 local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.tee $8 + i32.store local.get $8 local.get $10 i32.const 2 @@ -10315,169 +9811,12 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -10485,6 +9824,14 @@ (local $10 i32) (local $11 i32) (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $2 i32.const 1 i32.sub @@ -10566,20 +9913,24 @@ local.set $10 local.get $10 if + global.get $~lib/memory/__stack_pointer local.get $4 local.get $7 i32.const 2 i32.shl i32.add i32.load - local.set $11 + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer local.get $4 local.get $6 i32.const 2 i32.shl i32.add i32.load - local.set $12 + local.tee $12 + i32.store offset=4 local.get $11 local.get $12 i32.const 2 @@ -10621,8 +9972,12 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10641,6 +9996,17 @@ (local $18 i32) (local $19 i32) (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 i32.const 48 i32.le_s @@ -10649,6 +10015,10 @@ i32.const 1 i32.le_s if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer return end i32.const 0 @@ -10670,12 +10040,16 @@ br_if $case1|0 br $break|0 end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -10692,14 +10066,18 @@ local.get $5 select i32.store + global.get $~lib/memory/__stack_pointer local.get $3 local.get $4 local.get $5 select - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.set $4 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -10723,12 +10101,16 @@ select i32.store offset=8 end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.set $5 + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 local.get $5 local.get $4 i32.const 2 @@ -10751,6 +10133,10 @@ local.get $3 select i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $0 @@ -10760,7 +10146,11 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -10821,7 +10211,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $12 local.get $12 i32.const 1 @@ -10847,7 +10237,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $14 @@ -10868,7 +10258,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $3 local.get $3 local.get $5 @@ -10898,7 +10288,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $11 @@ -10940,7 +10330,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $20 local.set $15 local.get $8 @@ -11014,7 +10404,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -11027,134 +10417,129 @@ call $~lib/rt/tlsf/__free local.get $8 call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - local.get $1 - i32.gt_u + i32.load offset=12 + ) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.lt_u i32.sub ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.set $1 + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) local.get $1 - global.set $~lib/math/random_state0_64 local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i64.const 23 - i64.shl - i64.xor - local.set $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|50 (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 + local.get $1 + i32.store local.get $0 local.get $1 - i64.xor - local.set $0 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - global.set $~lib/math/random_state1_64 local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - f64.const 1 - f64.sub + i32.store offset=8 ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.sub + i32.store offset=12 ) - (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store i32.const 1 - local.set $2 + drop local.get $0 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 i32.lt_s - local.set $4 - local.get $4 if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $2 - call $~lib/array/Array#__get - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ end - i32.const 1 + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#__uset ) - (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|51 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load + i32.const 0 + call $~lib/array/Array#__get local.get $1 - i32.load + i32.const 0 + call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11363,7 +10748,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -11524,7 +10909,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11693,7 +11078,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -11758,7 +11143,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $12 local.get $12 i32.const 1 @@ -11784,7 +11169,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 local.set $14 @@ -11805,7 +11190,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $3 local.get $3 local.get $5 @@ -11835,7 +11220,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 local.get $11 @@ -11877,7 +11262,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $20 local.set $15 local.get $8 @@ -11951,7 +11336,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns<~lib/array/Array> end local.get $4 i32.const 1 @@ -11969,40 +11354,20 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT<~lib/array/Array> local.get $0 ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|50 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store @@ -12011,22 +11376,27 @@ i32.const 0 call $~lib/rt/itcms/__link ) - (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=4 ) - (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=8 ) - (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -12042,7 +11412,7 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -12070,23 +11440,21 @@ local.get $1 i32.const 1 i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ + call $~lib/array/Array>#set:length_ end local.get $0 local.get $1 local.get $2 - call $~lib/array/Array<~lib/array/Array>#__uset + call $~lib/array/Array>#__uset ) - (func $start:std/array~anonymous|51 (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 0 - call $~lib/array/Array#__get + i32.load local.get $1 - i32.const 0 - call $~lib/array/Array#__get + i32.load i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -12295,7 +11663,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -12456,7 +11824,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12625,7 +11993,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -12690,7 +12058,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight> local.set $12 local.get $12 i32.const 1 @@ -12716,7 +12084,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> end i32.const 0 local.set $14 @@ -12737,7 +12105,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight> local.set $3 local.get $3 local.get $5 @@ -12767,7 +12135,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> end i32.const 0 local.get $11 @@ -12809,7 +12177,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns> local.get $20 local.set $15 local.get $8 @@ -12883,7 +12251,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns> end local.get $4 i32.const 1 @@ -12901,107 +12269,20 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> - local.get $0 - ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop + call $~lib/util/sort/SORT> local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link ) - (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 - i32.ge_u - if - local.get $1 - 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 $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array>#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array>#__uset ) - (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - ) - (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -13210,7 +12491,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -13371,7 +12652,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13540,7 +12821,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -13605,7 +12886,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $12 local.get $12 i32.const 1 @@ -13631,7 +12912,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.set $14 @@ -13652,7 +12933,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $3 local.get $3 local.get $5 @@ -13682,7 +12963,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.get $11 @@ -13724,7 +13005,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> local.get $20 local.set $15 local.get $8 @@ -13798,7 +13079,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> end local.get $4 i32.const 1 @@ -13816,20 +13097,377 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT> + call $~lib/util/sort/SORT<~lib/string/String|null> local.get $0 ) - (func $~lib/array/Array>#get:length (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + call $~lib/string/String#get:length + local.set $3 + local.get $2 + local.get $3 + i32.or + i32.eqz + if + i32.const 0 + return + end + local.get $2 + i32.eqz + if + i32.const -1 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $4 + local.get $4 + if (result i32) + local.get $4 + else + local.get $2 + local.get $3 + i32.sub + end + ) + (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + i32.const 1 + drop + i32.const 8336 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + end + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $std/array/assertSorted<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__uset + ) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -14038,7 +13676,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -14199,7 +13837,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14368,7 +14006,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort<~lib/string/String> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14433,7 +14071,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> + call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $12 local.get $12 i32.const 1 @@ -14459,7 +14097,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 local.set $14 @@ -14480,7 +14118,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> + call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $3 local.get $3 local.get $5 @@ -14510,7 +14148,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 local.get $11 @@ -14552,7 +14190,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> + call $~lib/util/sort/mergeRuns<~lib/string/String> local.get $20 local.set $15 local.get $8 @@ -14626,7 +14264,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> + call $~lib/util/sort/mergeRuns<~lib/string/String> end local.get $4 i32.const 1 @@ -14644,133 +14282,20 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/string/String|null> + call $~lib/util/sort/SORT<~lib/string/String> local.get $0 ) - (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - 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 $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14845,7 +14370,7 @@ i32.sub end ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14865,1100 +14390,610 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) + 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 8336 - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + i32.const 8368 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end local.tee $1 i32.store end local.get $0 local.get $1 - call $std/array/assertSorted<~lib/string/String|null> + call $std/array/assertSorted<~lib/string/String> 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) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length + i32.load offset=4 local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#concat - ) - (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + i32.load offset=12 + local.set $3 i32.const 1 drop - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $3 local.get $1 + call $~lib/util/string/joinBooleanArray + return + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 100000 + i32.lt_u if - local.get $1 - i32.const 0 - i32.lt_s + local.get $0 + i32.const 100 + i32.lt_u if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + i32.const 1 + local.get $0 + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $0 + i32.const 10000 + i32.ge_u + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + return end + unreachable + else local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array<~lib/string/String>#set:length_ + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $0 + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__uset + unreachable ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 i64) + (local $9 i64) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) - global.get $~lib/memory/__stack_pointer - i32.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.const 1 - i32.ge_s - drop - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.set $5 - local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $3 - i32.const 0 - i32.eq - select - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $2 - i32.le_s - local.set $7 - local.get $7 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 if - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + i32.const 8812 local.get $6 i32.const 2 i32.shl i32.add - i32.load - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $6 + i64.load32_u + local.set $8 + i32.const 8812 + local.get $7 i32.const 2 i32.shl i32.add - i32.load offset=4 - local.tee $9 - i32.store offset=4 - local.get $9 - local.set $10 - local.get $8 - local.set $11 - local.get $8 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - if - local.get $8 - local.set $10 - local.get $9 - local.set $11 - end - local.get $6 - i32.const 1 + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 i32.sub - local.set $12 - block $while-break|1 - loop $while-continue|1 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=8 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|1 - end - br $while-continue|1 - end - end - end + local.set $2 local.get $0 - local.get $12 - i32.const 2 + local.get $2 + i32.const 1 i32.shl i32.add - local.get $11 - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=4 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|2 - end - br $while-continue|2 - end - end - end - local.get $0 - local.get $12 + local.get $8 + local.get $9 + 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 $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $10 + local.get $3 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8812 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8812 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store + else + local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 + i32.add + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $2 + i32.const 2 + i32.ge_u + local.set $3 + local.get $3 + if + local.get $2 i32.const 2 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 i32.shl i32.add - local.get $10 - i32.store offset=4 - local.get $6 + i32.const 9232 + local.get $1 + i32.wrap_i64 + i32.const 255 + i32.and i32.const 2 + i32.shl i32.add - local.set $6 - br $for-loop|0 + i32.load + i32.store + local.get $1 + i64.const 8 + i64.shr_u + local.set $1 + br $while-continue|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $2 i32.const 1 - i32.sub + i32.and + if + local.get $0 + i32.const 9232 + local.get $1 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + local.get $1 local.set $2 - local.get $3 - local.get $2 - i32.add - local.set $8 local.get $2 + i32.popcnt i32.const 1 - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 local.get $1 - i32.gt_s - local.set $9 - local.get $9 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $1 + i64.extend_i32_s + local.set $3 + local.get $3 + local.set $4 + i32.const 1 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i64.ge_u + local.set $2 + local.get $2 if + local.get $0 local.get $4 - local.get $6 + i64.div_u + local.set $0 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $5 i32.const 1 - i32.sub - i32.const 2 i32.shl - i32.add + local.set $5 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $0 + i64.const 1 + i64.ge_u + local.set $2 + local.get $2 + if local.get $0 - local.get $6 + local.get $3 + i64.div_u + local.set $0 + local.get $5 i32.const 1 - i32.sub - i32.const 2 - i32.shl i32.add - i32.load - i32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $for-loop|0 + local.set $5 + br $while-continue|1 end end - local.get $2 - local.set $7 - loop $for-loop|1 - local.get $7 + local.get $5 + i32.const 1 + i32.sub + ) + (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + local.get $3 + i64.extend_i32_s + local.set $4 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if local.get $3 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $4 - local.get $8 - local.get $7 + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $5 + local.get $4 + i64.const 1 + i64.sub + local.set $6 + loop $do-loop|0 + local.get $2 + i32.const 1 i32.sub - i32.const 2 - i32.shl - i32.add + local.set $2 local.get $0 - local.get $7 - i32.const 2 + local.get $2 + i32.const 1 i32.shl i32.add - i32.load offset=4 - i32.store - local.get $7 + i32.const 10288 + local.get $1 + local.get $6 + i64.and + i32.wrap_i64 i32.const 1 + i32.shl i32.add - local.set $7 - br $for-loop|1 + i32.load16_u + i32.store16 + local.get $1 + local.get $5 + i64.shr_u + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|0 end - end - local.get $1 - local.set $9 - loop $for-loop|2 - local.get $9 - local.get $3 - i32.le_s - local.set $10 - local.get $10 - if - global.get $~lib/memory/__stack_pointer + else + loop $do-loop|1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 local.get $4 - local.get $7 - i32.const 2 + i64.div_u + local.set $6 + local.get $0 + local.get $2 + i32.const 1 i32.shl i32.add - i32.load - local.tee $11 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 + i32.const 10288 + local.get $1 local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $12 - i32.store offset=4 - local.get $11 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - local.get $7 - i32.const 1 - i32.sub - local.set $7 - else - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 + local.get $4 + i64.mul + i64.sub + i32.wrap_i64 i32.const 1 + i32.shl i32.add - local.set $9 - br $for-loop|2 + i32.load16_u + i32.store16 + local.get $6 + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|1 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (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 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.set $2 + i32.const 1 + drop local.get $1 - i32.const 48 - i32.le_s + i32.const 0 + i32.lt_s + local.set $2 + local.get $2 if + i32.const 0 local.get $1 + i32.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 + end + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 i32.const 1 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 0 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.or + i32.store16 i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $1 - 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 $0 - i32.load - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $4 - local.get $5 - select - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=4 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i32.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer return end + local.get $2 + local.set $3 + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $3 local.get $1 - local.set $5 - i32.const 31 - local.get $5 - i32.clz - i32.sub - i32.const 2 + call $~lib/util/number/decimalCount32 i32.add + local.set $3 + local.get $0 local.set $6 - local.get $6 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $7 - i32.add - local.set $9 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $6 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 local.get $1 - i32.const 1 - i32.sub - local.set $11 - local.get $0 + local.set $5 + local.get $3 + local.set $4 i32.const 0 - local.get $11 - local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $12 - local.get $12 i32.const 1 - i32.add - local.set $13 - local.get $13 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $4 - i32.const 32 - i32.const 1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $12 - local.get $0 - i32.const 0 - local.get $12 - local.get $13 - local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> - end - i32.const 0 - local.set $14 - i32.const 0 - local.set $15 - loop $while-continue|2 - local.get $12 - local.get $11 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $12 - i32.const 1 - i32.add - local.set $5 - local.get $0 - local.get $5 - local.get $11 - local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $3 - local.get $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.set $16 - local.get $16 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $17 - local.get $5 - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $18 - local.get $17 - local.get $18 - i32.lt_s - select - local.set $3 - local.get $0 - local.get $5 - local.get $3 - local.get $16 - local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> - end - i32.const 0 - local.get $11 - local.get $15 - local.get $5 - local.get $3 - call $~lib/util/sort/nodePower - local.set $17 - local.get $14 - local.set $18 - loop $for-loop|3 - local.get $18 - local.get $17 - i32.gt_u - local.set $19 - local.get $19 - if - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $20 - local.get $20 - i32.const -1 - i32.ne - if - local.get $0 - local.get $20 - local.get $9 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $12 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String> - local.get $20 - local.set $15 - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $18 - i32.const 1 - i32.sub - local.set $18 - br $for-loop|3 - end - end - local.get $8 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $15 - i32.store - local.get $9 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $12 - i32.store - local.get $5 - local.set $15 - local.get $3 - local.set $12 - local.get $17 - local.set $14 - br $while-continue|2 - end - end - local.get $14 - local.set $4 - loop $for-loop|4 - local.get $4 - i32.const 0 - i32.ne - local.set $18 - local.get $18 - if - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $19 - local.get $19 - i32.const -1 - i32.ne - if - local.get $0 - local.get $19 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $11 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String> - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|4 - end - end - local.get $10 - call $~lib/rt/tlsf/__free - local.get $8 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=4 + local.set $2 local.get $0 i32.load offset=12 + local.set $3 + i32.const 0 + drop + i32.const 1 + drop + local.get $2 + local.get $3 local.get $1 - call $~lib/util/sort/SORT<~lib/string/String> - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 + call $~lib/util/string/joinIntegerArray + return ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length + (local $6 i32) + i32.const 0 local.set $2 + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - local.get $3 - i32.or - i32.eqz + i32.const 10 + i32.lt_u if - i32.const 0 + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 return end local.get $2 - i32.eqz - if - i32.const -1 - return - end + local.set $3 + i32.const 4 + i32.const 4 + i32.le_u + drop local.get $3 - i32.eqz - if - i32.const 1 - return - end + local.get $1 + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 local.get $0 - i32.const 0 + local.set $6 local.get $1 - i32.const 0 - local.get $2 - local.tee $4 + local.set $5 local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 local.get $4 - if (result i32) - local.get $4 - else - local.get $2 - local.get $3 - i32.sub - end + call $~lib/util/number/utoa32_dec_lut + local.get $3 ) - (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 8368 - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 - end - local.tee $1 - i32.store - end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String> - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -15967,16316 +15002,7389 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop i32.const 1 drop local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinBooleanArray + call $~lib/util/string/joinIntegerArray return ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i32) + (local $10 i64) (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i64) + (local $19 i64) + (local $20 i64) + (local $21 i64) + (local $22 i64) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i64) + i32.const 0 + local.get $4 + i32.sub + local.set $7 + i64.const 1 + local.get $7 + i64.extend_i32_s + i64.shl + local.set $8 + local.get $8 + i64.const 1 + i64.sub + local.set $9 + local.get $3 + local.get $1 + i64.sub + local.set $10 + local.get $3 + local.get $7 + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $11 + local.get $3 + local.get $9 + i64.and + local.set $12 + local.get $11 + call $~lib/util/number/decimalCount32 + local.set $13 + local.get $6 + local.set $14 loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 + local.get $13 + i32.const 0 + i32.gt_s + local.set $15 + local.get $15 if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 8812 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 8812 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 + 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 $13 + local.set $17 + local.get $17 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $17 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $17 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $17 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $17 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $17 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $17 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $17 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $17 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $17 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $11 + i32.const 1000000000 + i32.div_u + local.set $16 + local.get $11 + i32.const 1000000000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 100000000 + i32.div_u + local.set $16 + local.get $11 + i32.const 100000000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 10000000 + i32.div_u + local.set $16 + local.get $11 + i32.const 10000000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 1000000 + i32.div_u + local.set $16 + local.get $11 + i32.const 1000000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 100000 + i32.div_u + local.set $16 + local.get $11 + i32.const 100000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 10000 + i32.div_u + local.set $16 + local.get $11 + i32.const 10000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 1000 + i32.div_u + local.set $16 + local.get $11 + i32.const 1000 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 100 + i32.div_u + local.set $16 + local.get $11 + i32.const 100 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + i32.const 10 + i32.div_u + local.set $16 + local.get $11 + i32.const 10 + i32.rem_u + local.set $11 + br $break|1 + end + local.get $11 + local.set $16 + i32.const 0 + local.set $11 + br $break|1 + end + i32.const 0 + local.set $16 + br $break|1 + end + local.get $16 + local.get $14 + i32.or + if + local.get $0 + local.get $14 + local.tee $17 + i32.const 1 + i32.add + local.set $14 + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $16 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 + i32.sub + local.set $13 + local.get $11 + i64.extend_i32_u + local.get $7 + i64.extend_i32_s i64.shl - i64.or - i64.store + local.get $12 + i64.add + local.set $18 + local.get $18 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $13 + i32.add + global.set $~lib/util/number/_K + local.get $0 + local.set $23 + local.get $14 + local.set $17 + local.get $5 + local.set $22 + local.get $18 + local.set $21 + i32.const 11808 + local.get $13 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $7 + i64.extend_i32_s + i64.shl + local.set $20 + local.get $10 + local.set $19 + local.get $23 + local.get $17 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $24 + local.get $24 + i32.load16_u + local.set $25 + loop $while-continue|3 + local.get $21 + local.get $19 + i64.lt_u + if (result i32) + local.get $22 + local.get $21 + i64.sub + local.get $20 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $21 + local.get $20 + i64.add + local.get $19 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $19 + local.get $21 + i64.sub + local.get $21 + local.get $20 + i64.add + local.get $19 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + local.set $26 + local.get $26 + if + local.get $25 + i32.const 1 + i32.sub + local.set $25 + local.get $21 + local.get $20 + i64.add + local.set $21 + br $while-continue|3 + end + end + local.get $24 + local.get $25 + i32.store16 + local.get $14 + return + end br $while-continue|0 end end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8812 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8812 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 + loop $while-continue|4 i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 + local.set $15 + local.get $15 if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9232 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 + local.get $12 + i64.const 10 + i64.mul + local.set $12 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $12 + local.get $7 + i64.extend_i32_s i64.shr_u - local.set $1 - br $while-continue|0 + local.set $22 + local.get $22 + local.get $14 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $14 + local.tee $25 + i32.const 1 + i32.add + local.set $14 + local.get $25 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $22 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $12 + local.get $9 + i64.and + local.set $12 + local.get $13 + i32.const 1 + i32.sub + local.set $13 + local.get $12 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $13 + i32.add + global.set $~lib/util/number/_K + local.get $10 + i32.const 11808 + i32.const 0 + local.get $13 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $17 + local.get $14 + local.set $26 + local.get $5 + local.set $27 + local.get $12 + local.set $21 + local.get $8 + local.set $20 + local.get $10 + local.set $19 + local.get $17 + local.get $26 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $25 + local.get $25 + i32.load16_u + local.set $24 + loop $while-continue|6 + local.get $21 + local.get $19 + i64.lt_u + if (result i32) + local.get $27 + local.get $21 + i64.sub + local.get $20 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $21 + local.get $20 + i64.add + local.get $19 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $19 + local.get $21 + i64.sub + local.get $21 + local.get $20 + i64.add + local.get $19 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + local.set $23 + local.get $23 + if + local.get $24 + i32.const 1 + i32.sub + local.set $24 + local.get $21 + local.get $20 + i64.add + local.set $21 + br $while-continue|6 + end + end + local.get $25 + local.get $24 + i32.store16 + local.get $14 + return + end + br $while-continue|4 end end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 9232 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end + unreachable ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - local.get $1 - local.set $2 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $2 - i32.popcnt - i32.const 1 - i32.eq + i32.eqz if - i32.const 63 local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 local.get $1 - i32.clz - i32.sub - i32.div_u i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 i32.add return end local.get $1 - i64.extend_i32_s + local.get $2 + i32.add local.set $3 + local.get $1 local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 + i32.le_s + if (result i32) + local.get $3 + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $1 + local.set $4 + loop $for-loop|0 local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl + local.get $3 + i32.lt_s local.set $5 - br $while-continue|0 + local.get $5 + if + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - end - loop $while-continue|1 local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.add + return + else + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 + i32.const 21 + i32.le_s + else + i32.const 0 end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-loop|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 + if local.get $0 - local.get $2 + local.get $3 i32.const 1 i32.shl i32.add - i32.const 10288 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl + local.set $4 + local.get $4 + i32.const 2 i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 local.get $4 - i64.div_u - local.set $6 - local.get $0 + i32.const 0 local.get $2 + i32.sub i32.const 1 i32.shl - i32.add - i32.const 10288 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 + memory.copy + local.get $0 + local.get $3 i32.const 1 i32.shl i32.add - i32.load16_u + i32.const 46 i32.store16 - local.get $6 - local.set $1 local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $3 + i32.lt_s + if (result i32) + local.get $3 + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $3 + i32.sub + local.set $4 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + local.get $1 + local.get $4 + i32.add + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $6 + local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 + if + i32.const 0 + local.get $6 + i32.sub + local.set $6 + end + local.get $6 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $7 + local.get $5 + local.set $10 + local.get $6 + local.set $9 + local.get $7 + local.set $8 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/number/utoa32_dec_lut + local.get $5 + i32.const 45 + i32.const 43 + local.get $4 + select + i32.store16 + local.get $7 + local.set $1 + local.get $1 + i32.const 2 + i32.add + return + else + local.get $1 + i32.const 1 + i32.shl + local.set $7 + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $7 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $7 + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $1 + local.get $0 + local.get $7 + i32.add + i32.const 4 + i32.add + local.set $9 + local.get $3 + i32.const 1 + i32.sub + local.set $8 + local.get $8 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 + if + i32.const 0 + local.get $8 + i32.sub + local.set $8 + end + local.get $8 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $5 + local.get $9 + local.set $11 + local.get $8 + local.set $6 + local.get $5 + local.set $10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $11 + local.get $6 + local.get $10 + call $~lib/util/number/utoa32_dec_lut + local.get $9 + i32.const 45 + i32.const 43 + local.get $4 + select + i32.store16 + local.get $5 + i32.add + local.set $1 + local.get $1 + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return + unreachable ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (local $5 f64) + (local $6 i64) (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i32) (local $14 i32) (local $15 i32) - (local $16 i32) - (local $17 i32) + (local $16 f64) + (local $17 i64) (local $18 i64) (local $19 i64) (local $20 i64) (local $21 i64) (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 i32) + (local $23 i64) + (local $24 i64) + (local $25 i64) (local $26 i32) (local $27 i64) + (local $28 i32) + local.get $1 + f64.const 0 + f64.lt + local.set $2 + local.get $2 + if + local.get $1 + f64.neg + local.set $1 + local.get $0 + i32.const 45 + i32.store16 + end + local.get $1 + local.set $5 + local.get $0 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i64.reinterpret_f64 + local.set $6 + local.get $6 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $7 + local.get $6 + i64.const 4503599627370495 + i64.and + local.set $8 + local.get $7 i32.const 0 - local.get $4 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $8 + i64.add + local.set $9 + local.get $7 + i32.const 1 + local.get $7 + select + i32.const 1023 + i32.const 52 + i32.add i32.sub local.set $7 - i64.const 1 + local.get $9 + local.set $11 local.get $7 + local.set $10 + local.get $11 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $12 + local.get $10 + i32.const 1 + i32.sub + local.set $13 + local.get $12 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $12 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $12 + local.get $13 + local.get $14 + i32.sub + local.set $13 + i32.const 1 + local.get $11 + i64.const 4503599627370496 + i64.eq + i32.add + local.set $15 + local.get $12 + global.set $~lib/util/number/_frc_plus + local.get $11 + local.get $15 i64.extend_i32_s i64.shl - local.set $8 - local.get $8 i64.const 1 i64.sub - local.set $9 - local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $3 - local.get $7 + local.get $10 + local.get $15 + i32.sub + local.get $13 + i32.sub i64.extend_i32_s - i64.shr_u + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $13 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $10 + i32.const -61 + local.get $10 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $16 + local.get $16 + i32.trunc_sat_f64_s + local.set $15 + local.get $15 + local.get $15 + f64.convert_i32_s + local.get $16 + f64.ne + i32.add + local.set $15 + local.get $15 + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $14 + i32.const 348 + local.get $14 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 10936 + local.get $14 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 11632 + local.get $14 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $9 + i64.clz i32.wrap_i64 - local.set $11 - local.get $3 + local.set $14 local.get $9 - i64.and + local.get $14 + i64.extend_i32_s + i64.shl + local.set $9 + local.get $7 + local.get $14 + i32.sub + local.set $7 + global.get $~lib/util/number/_frc_pow local.set $12 - local.get $11 - call $~lib/util/number/decimalCount32 - local.set $13 - local.get $6 - local.set $14 - loop $while-continue|0 - local.get $13 - i32.const 0 - i32.gt_s - local.set $15 - local.get $15 - 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 $13 - local.set $17 - local.get $17 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $17 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $17 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $17 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $17 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $17 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $17 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $17 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $17 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $17 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $11 - i32.const 1000000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100 - i32.div_u - local.set $16 - local.get $11 - i32.const 100 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10 - i32.div_u - local.set $16 - local.get $11 - i32.const 10 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - local.set $16 - i32.const 0 - local.set $11 - br $break|1 - end - i32.const 0 - local.set $16 - br $break|1 - end - local.get $16 - local.get $14 - i32.or - if - local.get $0 - local.get $14 - local.tee $17 - i32.const 1 - i32.add - local.set $14 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $16 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $11 - i64.extend_i32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.get $12 - i64.add - local.set $18 - local.get $18 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $0 - local.set $23 - local.get $14 - local.set $17 - local.get $5 - local.set $22 - local.get $18 - local.set $21 - i32.const 11808 - local.get $13 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $20 - local.get $10 - local.set $19 - local.get $23 - local.get $17 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $24 - local.get $24 - i32.load16_u - local.set $25 - loop $while-continue|3 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $22 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $26 - local.get $26 - if - local.get $25 - i32.const 1 - i32.sub - local.set $25 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|3 - end - end - local.get $24 - local.get $25 - i32.store16 - local.get $14 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - local.set $15 - local.get $15 - if - local.get $12 - i64.const 10 - i64.mul - local.set $12 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $12 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $22 - local.get $22 - local.get $14 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $14 - local.tee $25 - i32.const 1 - i32.add - local.set $14 - local.get $25 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $22 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $12 - local.get $9 - i64.and - local.set $12 - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 11808 - i32.const 0 - local.get $13 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - local.get $0 - local.set $17 - local.get $14 - local.set $26 - local.get $5 - local.set $27 - local.get $12 - local.set $21 - local.get $8 - local.set $20 - local.get $10 - local.set $19 - local.get $17 - local.get $26 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $24 - loop $while-continue|6 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $27 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $23 - local.get $23 - if - local.get $24 - i32.const 1 - i32.sub - local.set $24 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|6 - end - end - local.get $25 - local.get $24 - i32.store16 - local.get $14 - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.set $3 - local.get $1 - local.get $3 - i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.add - return - else - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.const 2 - i32.add - local.get $4 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $3 - i32.lt_s - if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $3 - i32.sub - local.set $4 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $4 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - local.get $4 - i32.add - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - local.get $6 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $6 - i32.sub - local.set $6 - end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - local.get $5 - local.set $10 - local.get $6 - local.set $9 - local.get $7 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_dec_lut - local.get $5 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $7 - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - else - local.get $1 - i32.const 1 - i32.shl - local.set $7 - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $7 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $7 - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 - i32.sub - local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $5 - local.get $9 - local.set $11 - local.get $8 - local.set $6 - local.get $5 - local.set $10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $11 - local.get $6 - local.get $10 - call $~lib/util/number/utoa32_dec_lut - local.get $9 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $5 - i32.add - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 10936 - local.get $14 - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 11632 - local.get $14 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - local.set $24 - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $10 - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - i64.const 1 - i64.sub - local.set $25 - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $26 - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - local.set $28 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $28 - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $2 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinFloatArray - return - ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray - return - ) - (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 12048 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray - return - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray - return - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.extend8_s - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.extend8_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.extend8_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.extend8_s - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.extend8_s - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 65535 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 8812 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 8812 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 8812 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 8812 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i64.extend_i32_s - i64.or - i64.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i64.const 0 - i64.lt_s - local.set $2 - local.get $2 - if - i64.const 0 - local.get $1 - i64.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i64.extend_i32_s - i64.or - i64.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - return - ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - return - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - return - ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1227 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1229 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $~lib/rt/itcms/__collect - (local $0 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 - local.set $0 - local.get $0 - 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 - local.set $0 - local.get $0 - 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 $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $3 - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $1 - i32.const 0 - local.get $2 - local.get $1 - i32.const 0 - i32.ge_s - select - i32.add - local.set $1 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 0 - drop - local.get $3 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $7 - local.get $5 - local.get $8 - i32.sub - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - local.set $11 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $2 - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $4 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - i32.const 0 - drop - local.get $0 - local.get $2 - call $~lib/array/Array#set:length_ - local.get $2 - ) - (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 - local.get $6 - local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE - local.get $0 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 14128 - i32.const 80 - i32.const 469 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $3 - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $1 - i32.const 0 - local.get $2 - local.get $1 - i32.const 0 - i32.ge_s - select - i32.add - local.set $1 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $3 - i32.const 0 - drop - local.get $3 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $3 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $7 - local.get $5 - local.get $8 - i32.sub - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - local.set $11 - local.get $4 - local.get $8 - i32.const 0 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $2 - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $2 - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load8_u - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 1 - i32.add - local.get $4 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $4 - call $~lib/array/Array#set:length_ - local.get $3 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 1 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store8 - i32.const 0 - drop - local.get $0 - local.get $2 - call $~lib/array/Array#set:length_ - local.get $2 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.set $5 - local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $3 - i32.const 0 - i32.eq - select - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $2 - i32.le_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $8 - local.get $0 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.set $9 - local.get $9 - local.set $10 - local.get $8 - local.set $11 - local.get $8 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - if - local.get $8 - local.set $10 - local.get $9 - local.set $11 - end - local.get $6 - i32.const 1 - i32.sub - local.set $12 - block $while-break|1 - loop $while-continue|1 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $8 - local.get $8 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $8 - i32.store8 offset=2 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 offset=2 - block $while-break|2 - loop $while-continue|2 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $8 - local.get $8 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $8 - i32.store8 offset=1 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|2 - end - br $while-continue|2 - end - end - end - local.get $0 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 offset=1 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $7 - local.get $0 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $7 - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.get $2 - i32.add - local.set $8 - local.get $2 - i32.const 1 - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.gt_s - local.set $9 - local.get $9 - if - local.get $4 - local.get $6 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $for-loop|0 - end - end - local.get $2 - local.set $7 - loop $for-loop|1 - local.get $7 - local.get $3 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $4 - local.get $8 - local.get $7 - i32.sub - i32.const 0 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - i32.store8 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|1 - end - end - local.get $1 - local.set $9 - loop $for-loop|2 - local.get $9 - local.get $3 - i32.le_s - local.set $10 - local.get $10 - if - local.get $4 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $4 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $12 - local.get $11 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - else - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $12 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|2 - end - end - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - if - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $1 - 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 $0 - i32.load8_u - local.set $3 - local.get $0 - i32.load8_u offset=1 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store8 - local.get $3 - local.get $4 - local.get $5 - select - local.set $3 - local.get $0 - i32.load8_u offset=2 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store8 offset=1 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $5 - local.get $0 - i32.load8_u offset=1 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i32.store8 - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - i32.store8 offset=1 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - return - end - local.get $1 - local.set $5 - i32.const 31 - local.get $5 - i32.clz - i32.sub - i32.const 2 - i32.add - local.set $6 - local.get $6 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $7 - i32.add - local.set $9 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $6 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - i32.const 0 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $1 - i32.const 1 - i32.sub - local.set $11 - local.get $0 - i32.const 0 - local.get $11 - local.get $2 - call $~lib/util/sort/extendRunRight - local.set $12 - local.get $12 - i32.const 1 - i32.add - local.set $13 - local.get $13 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $4 - i32.const 32 - i32.const 1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $12 - local.get $0 - i32.const 0 - local.get $12 - local.get $13 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $14 - i32.const 0 - local.set $15 - loop $while-continue|2 - local.get $12 - local.get $11 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $12 - i32.const 1 - i32.add - local.set $5 - local.get $0 - local.get $5 - local.get $11 - local.get $2 - call $~lib/util/sort/extendRunRight - local.set $3 - local.get $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.set $16 - local.get $16 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $17 - local.get $5 - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $18 - local.get $17 - local.get $18 - i32.lt_s - select - local.set $3 - local.get $0 - local.get $5 - local.get $3 - local.get $16 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.get $11 - local.get $15 - local.get $5 - local.get $3 - call $~lib/util/sort/nodePower - local.set $17 - local.get $14 - local.set $18 - loop $for-loop|3 - local.get $18 - local.get $17 - i32.gt_u - local.set $19 - local.get $19 - if - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $20 - local.get $20 - i32.const -1 - i32.ne - if - local.get $0 - local.get $20 - local.get $9 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $12 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $20 - local.set $15 - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $18 - i32.const 1 - i32.sub - local.set $18 - br $for-loop|3 - end - end - local.get $8 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $15 - i32.store - local.get $9 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $12 - i32.store - local.get $5 - local.set $15 - local.get $3 - local.set $12 - local.get $17 - local.set $14 - br $while-continue|2 - end - end - local.get $14 - local.set $4 - loop $for-loop|4 - local.get $4 - i32.const 0 - i32.ne - local.set $18 - local.get $18 - if - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $19 - local.get $19 - i32.const -1 - i32.ne - if - local.get $0 - local.get $19 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $11 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|4 - end - end - local.get $10 - call $~lib/rt/tlsf/__free - local.get $8 - call $~lib/rt/tlsf/__free - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 14128 - i32.const 80 - i32.const 469 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#set:length_ - ) - (func $~lib/array/Array<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array<~lib/string/String>#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $7 - local.get $5 - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $5 - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - end - local.set $3 - i32.const 1 - drop - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $7 - local.get $5 - local.get $8 - i32.sub - local.tee $6 - local.get $7 - local.get $6 - i32.lt_s - select - local.set $11 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $2 - ) - (func $~lib/util/bytes/REVERSE<~lib/string/String> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.load - local.tee $8 - i32.store - local.get $6 - local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE<~lib/string/String> - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - 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 $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray - return - ) - (func $~lib/array/Array<~lib/string/String>#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 14128 - i32.const 80 - i32.const 469 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/ArrayU32#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - 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 $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 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/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/ArrayU8#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - 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 $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 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/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.get $1 - i32.const 255 - i32.and - i32.gt_u - local.get $0 - i32.const 255 - i32.and - local.get $1 - i32.const 255 - i32.and - i32.lt_u - i32.sub - ) - (func $std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/ArrayStr#constructor - ) - (func $~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#fill - ) - (func $~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#includes - ) - (func $~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - ) - (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 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 $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#lastIndexOf - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - 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 $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#copyWithin - ) - (func $~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#slice - ) - (func $~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 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/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#splice - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - local.get $3 - i32.or - i32.eqz - if - i32.const 0 - return - end - local.get $2 - i32.eqz - if - i32.const -1 - return - end - local.get $3 - i32.eqz - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $4 - local.get $4 - if (result i32) - local.get $4 - else - local.get $2 - local.get $3 - i32.sub - end - ) - (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 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 14128 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1152 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 4928 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 128 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 9232 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 10288 - 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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - 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~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/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>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) - 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>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - 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>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/array/Array>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array>#__visit - ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit - ) - (func $~lib/array/Array<~lib/string/String|null>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) - 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>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/array/Array<~lib/array/Array<~lib/array/Array>>#__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/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>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (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/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit - ) - (func $std/array/ArrayU32~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array~visit - ) - (func $std/array/ArrayU8~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array~visit - ) - (func $std/array/ArrayStr~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - ) - (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28u8%2Cu8%29=>i32> - block $std/array/ArrayStr - block $std/array/ArrayU8 - block $std/array/ArrayU32 - 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/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> - block $~lib/array/Array<~lib/string/String> - 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=>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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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/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/array/Array<~lib/string/String> $~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/string/String|null>> $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> $std/array/ArrayU32 $std/array/ArrayU8 $std/array/ArrayStr $~lib/function/Function<%28u8%2Cu8%29=>i32> $invalid - 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/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/array/Array<~lib/string/String>~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<~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 - local.get $0 - local.get $1 - call $std/array/ArrayU32~visit - return - end - local.get $0 - local.get $1 - call $std/array/ArrayU8~visit - return - end - local.get $0 - local.get $1 - call $std/array/ArrayStr~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit - 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:std/array - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 31040 - i32.const 31088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $1 - call $std/array/isSorted - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/assertSortedDefault (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - 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 7760 - br $~lib/util/sort/COMPARATOR|inlined.1 - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $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 - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $std/array/assertStableSortedForComplexObjects - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#slice - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.const 7856 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#sort - local.tee $0 - i32.store offset=12 - i32.const 1 - local.set $1 - i32.const 0 - local.set $2 - global.get $std/array/inputStabArr - 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 $3 - block $for-break0 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $5 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $2 - call $~lib/array/Array#__get - local.tee $6 - i32.store offset=20 - local.get $5 - i32.load - local.get $6 - i32.load - i32.ne - if (result i32) - i32.const 1 - else - local.get $5 - i32.load offset=4 - local.get $6 - i32.load offset=4 - i32.ne - end - if - i32.const 0 - local.set $1 - br $for-break0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1042 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $std/array/isSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/array/Array>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 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 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $1 - call $std/array/isSorted<~lib/array/Array> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createReverseOrderedElementsArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - call $~lib/array/Array>#constructor - local.tee $1 - i32.store - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - i32.const 0 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $std/array/Proxy#constructor - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/array/Array>#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $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/util/sort/extendRunRight> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $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 - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $std/array/isSorted> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $0 - local.get $2 - call $~lib/array/Array>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 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 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/assertSorted> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array>#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $1 - call $std/array/isSorted> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $std/array/isSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 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 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/assertSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - 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 $1 - call $std/array/isSorted<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.ne - if - i32.const 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 - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 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 - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String.__ne - if - i32.const 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 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/createRandomString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (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/memory/__stack_pointer - i32.const 8208 - local.tee $1 - i32.store - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - global.get $std/array/charset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/math/NativeMath.random - global.get $std/array/charset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - local.set $4 - local.get $4 - f64.floor - i32.trunc_f64_s - call $~lib/string/String#charAt - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String.__concat - local.tee $1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/createRandomStringArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $1 - i32.store - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - call $std/array/createRandomString - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $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/util/sort/extendRunRight<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $1 - local.set $4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $std/array/isSorted<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 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 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $std/array/assertSorted<~lib/string/String> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - 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 $1 - call $std/array/isSorted<~lib/string/String> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $std/array/Ref#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $std/array/Ref#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $std/array/Ref#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $std/array/Ref#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $std/array/Ref#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $std/array/Ref#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - 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>#join - 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/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $~lib/array/Array#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $~lib/array/Array#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $~lib/array/Array#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/util/number/_exp_pow + local.set $15 local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - 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 - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $4 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 8208 - end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8208 - local.tee $5 - i32.store offset=4 - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $3 - i32.lt_s - local.set $8 - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/string/String.__concat - local.tee $5 - i32.store offset=4 - end - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $24 + local.get $24 + i64.const 2147483647 + i64.add + local.set $24 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $24 + i64.const 32 + i64.shr_u + local.set $24 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $24 + i64.add + local.set $24 + local.get $7 + local.set $10 + local.get $15 + local.set $13 + local.get $10 + local.get $13 i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 64 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $0 - i32.load offset=12 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $5 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - local.tee $7 - i32.store offset=8 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - i32.const 1 - drop - local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $10 + global.get $~lib/util/number/_frc_plus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $23 + local.get $11 + i64.const 4294967295 + i64.and + local.set $22 + local.get $17 + i64.const 32 + i64.shr_u + local.set $21 + local.get $11 + i64.const 32 + i64.shr_u + local.set $20 + local.get $23 + local.get $22 + i64.mul + local.set $19 + local.get $21 + local.get $22 + i64.mul + local.get $19 + i64.const 32 + i64.shr_u + i64.add + local.set $18 + local.get $23 + local.get $20 + i64.mul + local.get $18 + i64.const 4294967295 + i64.and + i64.add + local.set $25 + local.get $25 + i64.const 2147483647 + i64.add + local.set $25 + local.get $18 + i64.const 32 + i64.shr_u + local.set $18 + local.get $25 + i64.const 32 + i64.shr_u + local.set $25 + local.get $21 + local.get $20 + i64.mul + local.get $18 + i64.add + local.get $25 + i64.add + i64.const 1 + i64.sub + local.set $25 + global.get $~lib/util/number/_exp + local.set $26 + local.get $15 + local.set $13 + local.get $26 + local.get $13 i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $start:std/array - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 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 - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=40 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=48 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=56 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=64 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=72 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=80 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=88 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=96 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=104 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=112 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=120 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=128 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=136 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=144 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=152 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=168 - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - 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 - i32.const 0 - call $~lib/array/Array#constructor - global.set $std/array/arr - i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array.isArray - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#constructor - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array.isArray - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 640 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array.isArray<~lib/string/String> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array.isArray<~lib/array/Array> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 672 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 1 + i32.const 64 + i32.add + local.set $26 + global.get $~lib/util/number/_frc_minus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $27 + local.get $27 + i64.const 2147483647 + i64.add + local.set $27 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $27 + i64.const 32 + i64.shr_u + local.set $27 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $27 + i64.add + i64.const 1 + i64.add + local.set $27 + local.get $25 + local.get $27 + i64.sub + local.set $23 + local.get $4 + local.get $24 + local.get $10 + local.get $25 + local.get $26 + local.get $23 + local.get $3 + call $~lib/util/number/genDigits + local.set $28 + local.get $0 + local.get $2 i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - drop + i32.shl + i32.add + local.get $28 + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $28 + local.get $28 + local.get $2 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 704 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + f64.const 0 + f64.eq if - i32.const 0 - i32.const 528 - i32.const 60 + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + return end local.get $1 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - drop local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 736 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + f64.sub + f64.const 0 + f64.eq i32.eqz if - i32.const 0 - i32.const 528 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + return + else + local.get $1 + f64.const 0 + f64.lt + local.set $2 + local.get $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $2 + i32.add + return + end unreachable end + local.get $0 local.get $1 - i32.const 1 + call $~lib/util/number/dtoa_core + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 i32.const 0 - i32.const -3 - call $~lib/array/Array#fill drop - local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 768 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill drop + i32.const 1 + drop + local.get $2 + local.get $3 local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 800 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 + call $~lib/util/string/joinFloatArray + return + ) + (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 i32.const 0 - i32.const 1 + drop i32.const 0 - call $~lib/array/Array#fill drop - local.get $1 - i32.const 5 i32.const 0 - i32.const 6 - i32.const 832 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + drop i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 864 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - local.get $2 i32.const 1 + i32.lt_s + drop i32.const 1 - i32.const 3 - call $~lib/array/Array#fill drop local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 912 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + local.get $3 + local.get $1 + call $~lib/util/string/joinStringArray + return + ) + (func $std/array/Ref#toString (param $0 i32) (result i32) + i32.const 12048 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + drop i32.const 0 + drop i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill drop - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 960 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill + i32.lt_s drop - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1008 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill + drop + i32.const 1 drop local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1056 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray + return + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 i32.const 0 - i32.const 1 + drop i32.const 0 - call $~lib/array/Array#fill drop - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1104 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length + drop i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 42 - call $~lib/array/Array#push + i32.const 1 + i32.lt_s drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length + drop i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray + return + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 0 + local.set $2 + i32.const 1 + drop + local.get $1 + i32.extend8_s + i32.const 0 + i32.lt_s local.set $2 local.get $2 - i32.const 42 - i32.eq - i32.eqz if i32.const 0 - i32.const 528 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length i32.const 0 - i32.eq - i32.eqz + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $1 + i32.extend8_s + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 528 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.extend8_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $2 + i32.add + return end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz + local.get $2 + local.set $3 + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $3 + local.get $1 + i32.extend8_s + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + i32.extend8_s + local.set $5 + local.get $3 + local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop + i32.const 1 + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinIntegerArray + return + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 0 + local.set $2 + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 528 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - call $~lib/array/Array#push + local.get $2 + local.set $3 + i32.const 2 + i32.const 4 + i32.le_u drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length + local.get $3 + local.get $1 + i32.const 65535 + i32.and + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + i32.const 65535 + i32.and + local.set $5 + local.get $3 + local.set $4 + i32.const 0 i32.const 1 - i32.eq - i32.eqz + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop + i32.const 1 + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinIntegerArray + return + ) + (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) + local.get $0 + i64.const 1000000000000000 + i64.lt_u if - i32.const 0 - i32.const 528 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort + local.get $0 + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + return + end unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + local.set $3 + local.get $3 + if + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + i32.const 8812 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 8812 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 8812 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 8812 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 44 - call $~lib/array/Array#push + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + i32.const 0 + local.set $2 + i32.const 0 drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 528 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + return end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz + local.get $2 + local.set $3 + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $1 + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u if + local.get $1 + i32.wrap_i64 + local.set $4 + local.get $3 + local.get $4 + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $7 + local.get $4 + local.set $6 + local.get $3 + local.set $5 i32.const 0 - i32.const 528 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + else + local.get $3 + local.get $1 + call $~lib/util/number/decimalCount64High + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + local.set $8 + local.get $3 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_dec_lut end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $3 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinIntegerArray + return + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + i32.const 0 + local.set $2 + i32.const 1 + drop + local.get $1 + i64.const 0 + i64.lt_s + local.set $2 + local.get $2 if - i32.const 0 - i32.const 528 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable + i64.const 0 + local.get $1 + i64.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 45 - call $~lib/array/Array#push + i32.const 0 + i32.const 1 + i32.le_s drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 528 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + local.get $2 + i32.add + return end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity + local.get $2 + local.set $3 i32.const 8 - i32.eq - i32.eqz + i32.const 4 + i32.le_u + drop + local.get $1 + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u if + local.get $1 + i32.wrap_i64 + local.set $4 + local.get $3 + local.get $4 + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $7 + local.get $4 + local.set $6 + local.get $3 + local.set $5 i32.const 0 - i32.const 528 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + else + local.get $3 + local.get $1 + call $~lib/util/number/decimalCount64High + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + local.set $8 + local.get $3 + local.set $5 i32.const 0 - i32.const 528 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_dec_lut end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $3 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinIntegerArray + return + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + 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 $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + return + ) + (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 0 + local.set $2 + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 528 - i32.const 131 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $3 + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $3 + local.get $1 + i32.const 255 + i32.and + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + i32.const 255 + i32.and + local.set $5 + local.get $3 + local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop + i32.const 1 + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinIntegerArray + return + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + 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 $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + return + ) + (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 - i32.const 8 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.load offset=4 - local.tee $0 - i32.store offset=16 - local.get $2 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + drop i32.const 0 + drop i32.const 0 + drop i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 i32.const 1 + i32.lt_s + drop i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset + drop + i32.const 1 + drop local.get $2 - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length + local.get $3 + local.get $1 + call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load offset=4 + local.get $1 i32.const 2 - i32.const 3 - i32.const 1200 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 + i32.shl + i32.add local.get $2 - i32.const 0 - call $~lib/array/Array#at + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + call $~lib/array/Array#get:length i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 147 - i32.const 3 + i32.const 1227 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 3 - call $~lib/array/Array#at - i32.const 4 + call $~lib/array/Array#push + drop + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 148 - i32.const 3 + i32.const 1229 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const -1 - call $~lib/array/Array#at - i32.const 4 - i32.eq - i32.eqz + local.get $0 + ) + (func $~lib/rt/itcms/__collect + (local $0 i32) + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 528 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - local.get $2 - i32.const -4 - call $~lib/array/Array#at - i32.const 1 - i32.eq - i32.eqz - if + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 528 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end - global.get $~lib/memory/__stack_pointer + 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 - call $~lib/array/Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - local.get $2 - call $~lib/array/Array#concat - local.tee $0 - i32.store offset=16 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz + local.tee $1 if - i32.const 0 - i32.const 528 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz + global.get $std/array/charset + local.tee $1 if - i32.const 0 - i32.const 528 - i32.const 160 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1152 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 4928 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 9232 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 10288 + 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 + i32.load + local.tee $2 if - i32.const 0 - i32.const 528 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + 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#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1248 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#concat drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 local.get $0 + i32.load offset=12 i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - local.get $2 - i32.const 46 - call $~lib/array/Array#push + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 drop - local.get $2 - i32.const 47 - call $~lib/array/Array#push + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - local.get $2 - call $~lib/array/Array#concat - local.tee $0 - i32.store offset=16 - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 175 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 176 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 177 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 178 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 179 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 local.get $0 + i32.load offset=12 i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 180 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/array/Array#pop - drop + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 185 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1280 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 local.get $1 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + 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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#concat - local.tee $0 - i32.store offset=16 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 195 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $1 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 196 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1312 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1360 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 203 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1408 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1456 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1504 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + 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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1552 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 207 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1600 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + drop local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1648 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 209 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1696 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 local.get $0 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + 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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 1744 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 211 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1792 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + 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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 1840 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 213 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1888 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array>#__visit + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/string/String|null>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1936 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 215 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 5 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + 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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 1984 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2032 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 217 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2080 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2128 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 219 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2176 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + drop local.get $0 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 2224 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 221 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2272 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 local.get $0 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2320 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2368 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 2416 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 42 - call $~lib/array/Array#unshift + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 233 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/array/Array<~lib/array/Array<~lib/array/Array>>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 238 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/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>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (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/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/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> + block $~lib/array/Array<~lib/string/String> + 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=>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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~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/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/array/Array<~lib/string/String> $~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/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 + 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/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/array/Array<~lib/string/String>~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<~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 $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz + unreachable + ) + (func $~start + global.get $~started if - i32.const 0 - i32.const 528 - i32.const 242 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $std/array/arr - local.set $41 + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 243 - i32.const 3 + i32.const 30880 + i32.const 30928 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 + ) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 244 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 0 i32.store - local.get $41 - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 245 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $2 i32.store - local.get $41 - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.eq + local.get $2 + local.get $1 + call $std/array/isSorted i32.eqz if i32.const 0 i32.const 528 - i32.const 246 + i32.const 1046 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 247 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 0 i32.store - local.get $41 - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 257 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + 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 7760 + br $~lib/util/sort/COMPARATOR|inlined.1 end - global.get $std/array/arr - local.set $41 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - call $~lib/array/Array#get:length + local.get $1 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 259 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + 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 $41 - i32.store - local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.const 42 + i32.store offset=8 + local.get $1 + local.get $2 i32.eq - i32.eqz if - i32.const 0 - i32.const 528 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end - global.get $std/array/arr - local.set $41 + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $8 i32.store - local.get $41 + local.get $8 + local.get $0 + local.get $4 i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 261 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + i32.add + local.tee $4 i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 263 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.eq - i32.eqz + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 528 - i32.const 267 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $std/array/arr - local.set $41 + local.get $4 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/assertStableSortedForComplexObjects + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 269 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $41 + global.get $std/array/inputStabArr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store - local.get $41 + local.get $7 + i32.const 7856 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#sort + local.tee $0 + i32.store offset=12 i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 271 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.set $1 + i32.const 0 + local.set $2 + global.get $std/array/inputStabArr + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $7 i32.store - local.get $41 - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq + local.get $7 + call $~lib/array/Array#get:length + local.set $3 + block $for-break0 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.tee $6 + i32.store offset=20 + local.get $5 + i32.load + local.get $6 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $5 + i32.load offset=4 + local.get $6 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $1 + br $for-break0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 i32.eqz if i32.const 0 i32.const 528 - i32.const 272 + i32.const 1042 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2464 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2512 - call $~lib/rt/__newArray - local.set $41 + 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 $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq if - i32.const 0 - i32.const 528 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 + local.set $4 local.get $0 + local.get $4 i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 i32.const 2 - i32.const 3 - i32.const 2544 - call $~lib/rt/__newArray - local.set $41 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 528 - i32.const 285 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/isSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/array/Array>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + i32.const 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 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 5 - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2576 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $1 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 + i32.store local.get $0 local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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 $1 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + call $std/array/isSorted<~lib/array/Array> i32.eqz if i32.const 0 i32.const 528 - i32.const 294 + i32.const 1046 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.const -1 - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2656 - call $~lib/rt/__newArray - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedElementsArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 297 - i32.const 3 - 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 - local.get $1 - i32.const -3 - i32.const -1 - call $~lib/array/Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2688 - call $~lib/rt/__newArray - local.set $41 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const -1 - i32.const -3 - call $~lib/array/Array#slice - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $0 + call $~lib/array/Array>#constructor + local.tee $1 i32.store - local.get $41 - call $~lib/array/Array#get:length i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $1 + local.get $2 + i32.const 0 + local.get $0 + i32.const 1 + i32.sub + local.get $2 + i32.sub + call $std/array/Proxy#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end local.get $1 - i32.const 10 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#slice - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#reverse - drop - global.get $std/array/arr - local.set $41 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 311 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 312 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.const 44 + i32.store offset=8 + local.get $1 + local.get $2 i32.eq - i32.eqz if - i32.const 0 - i32.const 528 - i32.const 313 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end - global.get $std/array/arr - local.set $41 + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $8 i32.store - local.get $41 + local.get $8 + local.get $0 + local.get $4 i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 314 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + i32.add + local.tee $4 i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 315 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 44 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 0 - i32.const 6 - i32.const 2720 - call $~lib/rt/__newArray - local.set $41 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#reverse - local.tee $0 - i32.store offset=16 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - local.set $1 - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.get $0 - call $~lib/array/Array#get:length + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 local.get $1 - i32.sub - i32.const 1 - i32.sub - i32.eq - i32.eqz + local.get $5 + i32.lt_s + local.set $6 + local.get $6 if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else i32.const 0 - i32.const 528 - i32.const 322 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/isSorted> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 0 - i32.const 6 - i32.const 2752 - call $~lib/rt/__newArray - local.set $41 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#reverse - local.tee $1 - i32.store offset=4 - i32.const 0 + i64.const 0 + i64.store + i32.const 1 local.set $2 - local.get $1 - call $~lib/array/Array#get:length + local.get $0 + call $~lib/array/Array>#get:length local.set $3 - loop $for-loop|1 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s local.set $4 local.get $4 if - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - call $~lib/array/Array#get:length + local.get $0 local.get $2 - i32.sub i32.const 1 i32.sub - i32.eq - i32.eqz + call $~lib/array/Array>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + call $~lib/array/Array>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if i32.const 0 - i32.const 528 - i32.const 327 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return end local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|1 + br $for-loop|0 end end + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/assertSorted> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 17 i32.const 0 - i32.const 6 - i32.const 2784 - call $~lib/rt/__newArray - local.set $41 + i32.store + local.get $0 + local.get $1 + call $~lib/array/Array>#sort + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $2 i32.store - local.get $41 - call $~lib/array/Array#reverse - local.tee $2 - i32.store offset=12 - i32.const 0 - local.set $3 local.get $2 - call $~lib/array/Array#get:length - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $4 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - call $~lib/array/Array#__get - local.get $2 - call $~lib/array/Array#get:length - local.get $3 - i32.sub - i32.const 1 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 332 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end + local.get $1 + call $std/array/isSorted> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1046 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 1 - i32.const 9 - i32.const 2832 - call $~lib/rt/__newArray - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + 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 $41 - i32.store - local.get $41 - call $~lib/array/Array#reverse - local.tee $3 - i32.store offset=20 i32.const 0 - local.set $4 - local.get $3 - call $~lib/array/Array#get:length - local.set $5 - loop $for-loop|3 - local.get $4 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $3 - local.get $4 - call $~lib/array/Array#__get - local.get $3 - call $~lib/array/Array#get:length - local.get $4 - i32.sub - i32.const 1 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 337 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|3 - end + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 1 - i32.const 9 - i32.const 2880 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $8 i32.store - local.get $41 - call $~lib/array/Array#reverse + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add local.tee $4 - i32.store offset=24 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - local.set $5 - local.get $4 - call $~lib/array/Array#get:length - local.set $6 - loop $for-loop|4 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if + i32.gt_s + if + loop $while-continue|0 local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 local.get $5 - call $~lib/array/Array#__get - local.get $4 - call $~lib/array/Array#get:length + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.sub - i32.const 1 - i32.sub - i32.eq - i32.eqz + i32.lt_s + local.set $6 + local.get $6 if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else i32.const 0 - i32.const 528 - i32.const 342 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - i32.const 1 - i32.add local.set $5 - br $for-loop|4 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/isSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 9 + i64.const 0 + i64.store i32.const 1 - i32.const 9 - i32.const 2928 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#reverse - local.tee $5 - i32.store offset=28 - i32.const 0 - local.set $6 - local.get $5 - call $~lib/array/Array#get:length - local.set $7 - loop $for-loop|5 - local.get $6 - local.get $7 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s - local.set $8 - local.get $8 + local.set $4 + local.get $4 if - local.get $5 - local.get $6 - call $~lib/array/Array#__get - local.get $5 - call $~lib/array/Array#get:length - local.get $6 - i32.sub + local.get $0 + local.get $2 i32.const 1 i32.sub - i32.eq - i32.eqz + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if i32.const 0 - i32.const 528 - i32.const 347 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 - br $for-loop|5 + local.set $2 + br $for-loop|0 end end - global.get $std/array/arr - local.set $41 + i32.const 1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 355 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/assertSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 358 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 45 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 361 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 i32.store - local.get $41 - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 364 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#sort + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $2 i32.store - local.get $41 - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq + local.get $2 + local.get $1 + call $std/array/isSorted<~lib/string/String|null> i32.eqz if i32.const 0 i32.const 528 - i32.const 367 + i32.const 1046 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 370 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual<~lib/string/String|null> (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 - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 i32.eqz if - i32.const 0 - i32.const 528 - i32.const 373 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.ne + if + i32.const 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 + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 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 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 376 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + local.set $4 + local.get $4 + if + i32.const 0 + drop + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String.__ne + if + i32.const 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 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 379 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 382 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 10 - i32.const 2976 - call $~lib/rt/__newArray - local.set $41 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/createRandomString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) global.get $~lib/memory/__stack_pointer - local.get $41 + 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 8208 + local.tee $1 i32.store - local.get $41 - f32.const nan:0x400000 i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 384 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + global.get $std/array/charset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/math/NativeMath.random + global.get $std/array/charset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String#get:length + f64.convert_i32_s + f64.mul + local.set $4 + local.get $4 + f64.floor + i32.trunc_sat_f64_s + call $~lib/string/String#charAt + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String.__concat + local.tee $1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - i32.const 1 - i32.const 3 - i32.const 11 - i32.const 3008 - call $~lib/rt/__newArray - local.set $41 + local.get $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/createRandomStringArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $1 i32.store - local.get $41 - f64.const nan:0x8000000000000 i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 385 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_sat_f64_s + call $std/array/createRandomString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + local.get $1 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3040 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=24 - local.get $4 - i32.const 2 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - i32.const 7 - i32.const 1 - global.set $~argumentsLength + ) + (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + 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 - call $~lib/array/Array#lastIndexOf@varargs - i32.const -1 + i32.store offset=8 + local.get $1 + local.get $2 i32.eq - i32.eqz if - i32.const 0 - i32.const 528 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end + local.get $1 + local.set $4 + local.get $0 local.get $4 i32.const 2 - i32.const 3 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 local.get $4 + i32.const 1 + i32.add + local.tee $4 i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 2 - call $~lib/array/Array#lastIndexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 395 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - i32.const -2 - call $~lib/array/Array#lastIndexOf + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.eq - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 528 - i32.const 396 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end local.get $4 - i32.const 2 - i32.const -1 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 397 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - local.set $4 - local.get $4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 405 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/isSorted<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - local.set $4 - local.get $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 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 408 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + i32.const 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 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - global.get $std/array/arr - local.set $41 + i32.const 1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - local.set $4 - local.get $4 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 411 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/assertSorted<~lib/string/String> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - local.set $4 - local.get $4 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 0 i32.store - local.get $41 - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - local.set $4 - local.get $4 - i32.const 1 - i32.eq + local.get $0 + local.get $1 + 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 $1 + call $std/array/isSorted<~lib/string/String> i32.eqz if i32.const 0 i32.const 528 - i32.const 417 + i32.const 1046 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - local.set $4 - local.get $4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 1 - i32.eq + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 420 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $std/array/Ref#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 8208 + local.tee $5 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 i32.store - local.get $41 - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - local.set $4 local.get $4 - i32.const 1 - i32.eq - i32.eqz + i32.const 0 + i32.ne if - i32.const 0 - i32.const 528 - i32.const 423 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end - global.get $std/array/arr - local.set $41 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + 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 $41 - i32.store - local.get $41 - i32.const 43 i32.const 0 - call $~lib/array/Array#includes - local.set $4 - local.get $4 + i32.store offset=8 + local.get $1 i32.const 1 - i32.eq - i32.eqz + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 426 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - local.set $4 - local.get $4 - i32.const 1 - i32.eq + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 429 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $std/array/Ref#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 43 + i32.const 8208 + local.tee $5 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 i32.const 2 - call $~lib/array/Array#includes - local.set $4 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store local.get $4 - i32.const 1 - i32.eq - i32.eqz + i32.const 0 + i32.ne if - i32.const 0 - i32.const 528 - i32.const 432 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end - i32.const 1 - i32.const 2 - i32.const 10 - i32.const 3088 - call $~lib/rt/__newArray - local.set $41 + local.get $5 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $41 - f32.const nan:0x400000 + local.get $0 + i32.const 8496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + 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 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/array/Array#includes - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 434 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 11 - i32.const 3120 - call $~lib/rt/__newArray - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - f64.const nan:0x8000000000000 + local.get $1 + 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 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/array/Array#includes - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 435 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + 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 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 8496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + 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 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $41 - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - drop - global.get $std/array/arr - local.set $41 + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - call $~lib/array/Array#get:length + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 439 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $std/array/internalCapacity - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 441 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 442 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3152 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3200 - call $~lib/rt/__newArray - local.set $41 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - local.get $41 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $3 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 449 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - local.get $5 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3248 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 450 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $~lib/array/Array#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3280 - call $~lib/rt/__newArray + i32.const 8208 local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 0 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 i32.const 0 - call $~lib/array/Array#splice - local.set $41 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 + local.get $0 + local.get $3 i32.const 2 - i32.const 3 - i32.const 3328 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if - i32.const 0 - i32.const 528 - i32.const 453 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3360 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 454 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3408 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.set $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3456 - call $~lib/rt/__newArray - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 457 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3488 - call $~lib/rt/__newArray - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 458 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3520 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3568 - call $~lib/rt/__newArray - local.set $41 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3600 - call $~lib/rt/__newArray - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 462 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#join + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3632 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__newArray - local.set $41 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - local.get $41 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $3 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 465 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - local.get $5 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3712 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 466 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $~lib/array/Array#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3760 - call $~lib/rt/__newArray + i32.const 8208 local.tee $5 - i32.store offset=28 - local.get $5 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.set $41 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 1 + local.get $0 + local.get $3 i32.const 2 - i32.const 3 - i32.const 3808 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if - i32.const 0 - i32.const 528 - i32.const 469 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3840 - call $~lib/rt/__newArray - local.set $41 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 470 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3888 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3936 - call $~lib/rt/__newArray - local.set $41 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 473 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3968 - call $~lib/rt/__newArray - local.set $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 474 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4000 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.set $41 + i32.const 0 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4048 - call $~lib/rt/__newArray - local.set $41 + local.get $1 + call $~lib/array/Array#join + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 477 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4080 - call $~lib/rt/__newArray - local.set $41 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $41 + 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 $41 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $3 i32.const 0 - call $std/array/isArraysEqual + i32.lt_s + if + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 478 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $~lib/array/Array#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4128 - call $~lib/rt/__newArray + i32.const 8208 local.tee $5 - i32.store offset=28 - local.get $5 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.set $41 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 1 + local.get $0 + local.get $3 i32.const 2 - i32.const 3 - i32.const 4176 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if - i32.const 0 - i32.const 528 - i32.const 481 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4208 - call $~lib/rt/__newArray - local.set $41 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 482 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4256 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4304 - call $~lib/rt/__newArray - local.set $41 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + 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 $41 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $3 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 485 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 8208 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4336 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - i32.const 528 - i32.const 486 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if (result i32) + local.get $4 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 8208 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4384 - call $~lib/rt/__newArray + i32.const 8208 local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + i32.store offset=4 + local.get $2 + call $~lib/string/String#get:length + local.set $6 i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4432 - call $~lib/rt/__newArray - local.set $41 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if - i32.const 0 - i32.const 528 - i32.const 489 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=4 end local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4464 - call $~lib/rt/__newArray - local.set $41 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 490 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4512 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/array/Array#splice - local.set $41 + i32.store + local.get $0 + i32.const 8496 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $41 + local.get $1 i32.store - local.get $41 + local.get $1 + 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 + ) + (func $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 - i32.const 3 - i32.const 4560 + i32.const 26 + i32.const 0 call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 493 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $5 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + local.tee $7 + i32.store offset=8 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + i32.const 1 + drop + local.get $3 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4592 - call $~lib/rt/__newArray - local.set $41 + local.get $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $start:std/array + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 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 + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8 + 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/array/isArraysEqual + i32.const 0 + call $~lib/array/Array#constructor + global.set $std/array/arr + i32.const 0 + call $~lib/array/Array.isArray<~lib/array/Array|null> + i32.eqz i32.eqz if i32.const 0 i32.const 528 - i32.const 494 + i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4640 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 7 i32.const 0 - call $~lib/array/Array#splice - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4688 - call $~lib/rt/__newArray + call $std/array/Ref#constructor local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array.isArray + i32.eqz i32.eqz if i32.const 0 i32.const 528 - i32.const 497 + i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4720 - call $~lib/rt/__newArray + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#constructor local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> + i32.eqz i32.eqz if i32.const 0 i32.const 528 - i32.const 498 + i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4768 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4816 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $std/array/isArraysEqual + i32.const 1 + call $~lib/array/Array.isArray + i32.eqz i32.eqz if i32.const 0 i32.const 528 - i32.const 501 + i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4848 - call $~lib/rt/__newArray + i32.const 640 local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array.isArray<~lib/string/String> i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 502 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 8 - i32.const 4896 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/array/Array#splice - local.tee $3 - i32.store offset=20 - local.get $3 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 506 + i32.const 50 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array.isArray<~lib/array/Array> i32.eqz if i32.const 0 i32.const 528 - i32.const 507 + i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 5 - i32.const 2 - i32.const 8 i32.const 0 + i32.const 6 + i32.const 672 call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=4 local.tee $1 i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 + local.get $1 i32.const 1 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 i32.const 1 - i32.const 0 - i32.const 2 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 - i32.const 2 - i32.const 0 - i32.const 3 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 i32.const 3 - i32.const 0 - i32.const 4 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 - i32.const 4 - i32.const 0 + call $~lib/array/Array#fill + drop + local.get $1 i32.const 5 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $2 - local.tee $4 - i32.store offset=24 + i32.const 0 + i32.const 6 + i32.const 704 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $3 - i32.store offset=20 - local.get $3 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 512 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - call $~lib/array/Array#__get - i32.load - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 513 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - call $~lib/array/Array#__get - i32.load - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 514 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 516 + i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 0 - call $~lib/array/Array#__get - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 517 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1 - call $~lib/array/Array#__get - i32.load - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 518 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - call $~lib/array/Array#__get - i32.load + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + drop + local.get $1 i32.const 5 - i32.eq + i32.const 0 + i32.const 6 + i32.const 736 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 519 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 12 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - local.tee $2 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset local.get $1 i32.const 1 i32.const 0 - call $~lib/array/Array#__uset + i32.const -3 + call $~lib/array/Array#fill + drop local.get $1 - i32.const 2 + i32.const 5 i32.const 0 - i32.const 2 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $1 - local.tee $2 - i32.store offset=12 + i32.const 6 + i32.const 768 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $1 - i32.store offset=4 - local.get $1 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 524 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=16 - local.get $0 - if (result i32) - local.get $0 - else - i32.const 5056 - i32.const 528 - i32.const 525 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 525 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#get:length i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 527 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + drop + local.get $1 + i32.const 5 i32.const 0 - call $~lib/array/Array#__get + i32.const 6 + i32.const 800 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 528 + i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 + i32.const 0 i32.const 1 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=16 - local.get $0 - if (result i32) - local.get $0 - else - i32.const 5056 - i32.const 528 - i32.const 529 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 2 - i32.eq + i32.const 0 + call $~lib/array/Array#fill + drop + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 832 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 529 + i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 864 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 i32.const 1 i32.const 1 - call $~lib/array/Array#__set - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5120 + call $~lib/array/Array#fill + drop + local.get $2 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 912 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i i32.const 0 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 542 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5152 + local.get $2 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + drop + local.get $2 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 960 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 545 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5184 + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + local.get $2 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1008 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 548 + i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + local.get $2 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + drop + local.get $2 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1056 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store + i32.store offset=8 local.get $41 - i32.const 5216 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + drop + local.get $2 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1104 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 556 + i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable @@ -32288,13 +22396,13 @@ i32.store local.get $41 call $~lib/array/Array#get:length - i32.const 8 + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 557 + i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable @@ -32305,22 +22413,14 @@ local.get $41 i32.store local.get $41 - i32.const 5248 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne + call $std/array/internalCapacity + i32.const 8 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 559 + i32.const 98 i32.const 3 call $~lib/builtins/abort unreachable @@ -32331,31 +22431,8 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop + i32.const 42 + call $~lib/array/Array#push drop global.get $std/array/arr local.set $41 @@ -32363,22 +22440,15 @@ local.get $41 i32.store local.get $41 - i32.const 5280 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 572 + i32.const 102 i32.const 3 call $~lib/builtins/abort unreachable @@ -32390,13 +22460,13 @@ i32.store local.get $41 call $~lib/array/Array#get:length - i32.const 2 + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 573 + i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable @@ -32407,106 +22477,70 @@ local.get $41 i32.store local.get $41 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 5312 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - local.get $2 - i32.const 5360 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#findLastIndex - global.set $std/array/i - global.get $std/array/i - i32.const 0 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 586 + i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 5392 + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#findLastIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 + call $~lib/array/Array#pop + local.set $2 + local.get $2 + i32.const 42 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 589 + i32.const 108 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 5424 + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#findLastIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + call $~lib/array/Array#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 592 + i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 5456 + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#findLastIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 601 + i32.const 110 i32.const 3 call $~lib/builtins/abort unreachable @@ -32517,22 +22551,23 @@ local.get $41 i32.store local.get $41 - i32.const 5488 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#every - local.set $2 - local.get $2 + call $~lib/array/Array#get:length i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 608 + i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable @@ -32543,22 +22578,33 @@ local.get $41 i32.store local.get $41 - i32.const 5520 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#every - local.set $2 - local.get $2 i32.const 0 + call $~lib/array/Array#__get + i32.const 43 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 611 + i32.const 116 i32.const 3 call $~lib/builtins/abort unreachable @@ -32569,22 +22615,23 @@ local.get $41 i32.store local.get $41 - i32.const 5552 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/array/Array#every - local.set $2 - local.get $2 - i32.const 1 + call $~lib/array/Array#get:length + i32.const 2 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 619 + i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable @@ -32595,14 +22642,14 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length + call $std/array/internalCapacity i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 620 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable @@ -32613,22 +22660,15 @@ local.get $41 i32.store local.get $41 - i32.const 5584 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#every - local.set $2 - local.get $2 i32.const 0 + call $~lib/array/Array#__get + i32.const 43 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 622 + i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable @@ -32639,15 +22679,27 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop + i32.const 45 + call $~lib/array/Array#push drop global.get $std/array/arr local.set $41 @@ -32655,38 +22707,51 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 128 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 5616 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#every - local.set $2 - local.get $2 - i32.const 1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 635 + i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable @@ -32697,14 +22762,15 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length - i32.const 2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 636 + i32.const 130 i32.const 3 call $~lib/builtins/abort unreachable @@ -32716,193 +22782,158 @@ i32.store local.get $41 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 131 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5648 - local.set $41 + i32.const 2 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#some - local.set $2 + local.get $2 + i32.load offset=4 + local.tee $0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset local.get $2 i32.const 1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/array/Array#set:length + local.get $0 + call $~lib/array/Array#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 646 + i32.const 139 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5680 - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#some - local.set $2 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 1200 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 local.get $2 i32.const 0 + call $~lib/array/Array#at + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 649 + i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5712 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#some - local.set $2 local.get $2 - i32.const 0 + i32.const 3 + call $~lib/array/Array#at + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 657 + i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 8 + local.get $2 + i32.const -1 + call $~lib/array/Array#at + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 658 + i32.const 149 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5744 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#some - local.set $2 local.get $2 + i32.const -4 + call $~lib/array/Array#at i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 660 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop + local.get $2 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=16 global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 5776 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#some - local.set $2 - local.get $2 - i32.const 0 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 673 + i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable @@ -32914,199 +22945,141 @@ i32.store local.get $41 call $~lib/array/Array#get:length - i32.const 2 + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 674 + i32.const 160 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr + i32.const 3 + i32.const 1248 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store + i32.store offset=8 local.get $41 - i32.const 3 - call $~lib/array/Array#push + call $~lib/array/Array#concat drop - i32.const 0 - global.set $std/array/i global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 5808 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 685 + i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 0 - global.set $std/array/i - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5840 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 + call $~lib/array/Array#__get + i32.const 43 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 694 + i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#get:length - i32.const 8 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 695 + i32.const 167 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5872 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 698 + i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop + local.get $2 + i32.const 46 + call $~lib/array/Array#push drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop + local.get $2 + i32.const 47 + call $~lib/array/Array#push drop - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i + local.get $2 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=16 global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 5904 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 712 + i32.const 175 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $2 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -33114,648 +23087,632 @@ if i32.const 0 i32.const 528 - i32.const 713 + i32.const 176 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5936 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#forEach - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $0 call $~lib/array/Array#get:length - i32.const 100 + i32.const 5 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 738 + i32.const 177 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 0 - local.set $2 - loop $for-loop|6 - local.get $2 - i32.const 100 - i32.lt_s - local.set $1 - local.get $1 - if - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|6 - end + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 178 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $0 i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 5968 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#map - local.tee $2 - i32.store offset=12 - local.get $2 - call $~lib/array/Array#get:length - i32.const 4 + call $~lib/array/Array#__get + i32.const 45 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 752 + i32.const 180 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 0 + local.get $0 + i32.const 3 call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq + i32.const 46 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 753 + i32.const 181 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 6000 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#map - drop - global.get $std/array/i - i32.const 6 + local.get $0 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 762 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $0 + call $~lib/array/Array#pop + drop + local.get $0 call $~lib/array/Array#get:length - i32.const 8 + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 763 + i32.const 185 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 6032 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#map - drop - global.get $std/array/i - i32.const 406 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 1280 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 770 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i + local.get $1 global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 6064 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/array/Array#map - drop - global.get $std/array/i - i32.const 1 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=16 + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 785 + i32.const 195 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + local.get $1 call $~lib/array/Array#get:length - i32.const 2 + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 786 + i32.const 196 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1312 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 + i32.const 5 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr + i32.const 3 + i32.const 1360 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store + i32.store offset=8 local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - global.get $std/array/arr + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1408 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6096 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1456 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#filter - local.tee $2 - i32.store offset=12 - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 796 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1504 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6128 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1552 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 6 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 805 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1600 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 2 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length - i32.const 8 - i32.eq + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1648 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 806 + i32.const 209 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1696 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 0 - global.set $std/array/i - global.get $std/array/arr + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6160 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1744 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 406 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 813 + i32.const 211 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1792 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1840 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store + i32.store offset=8 local.get $41 - call $~lib/array/Array#pop - drop i32.const 0 - global.set $std/array/i - global.get $std/array/arr + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6192 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1936 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 1 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 828 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1984 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length + i32.const 5 i32.const 2 - i32.eq + i32.const 3 + i32.const 2032 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 829 + i32.const 217 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 + i32.const 5 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr + i32.const 2080 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6224 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2128 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 839 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2176 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6256 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2224 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 843 + i32.const 221 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2272 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6288 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2320 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 i32.const 0 - call $~lib/array/Array#reduce - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.const 1 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 846 + i32.const 223 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2368 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6320 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2416 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store offset=8 local.get $41 i32.const 0 - call $~lib/array/Array#reduce - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.const 0 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 849 + i32.const 225 i32.const 3 call $~lib/builtins/abort unreachable @@ -33766,23 +23723,23 @@ local.get $41 i32.store local.get $41 - i32.const 6352 + i32.const 42 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 + call $~lib/array/Array#get:length + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 857 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -33793,14 +23750,14 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length + call $std/array/internalCapacity i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 858 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable @@ -33811,23 +23768,15 @@ local.get $41 i32.store local.get $41 - i32.const 6384 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 + call $~lib/array/Array#__get + i32.const 42 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 860 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable @@ -33838,55 +23787,34 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6416 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 873 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable @@ -33897,14 +23825,15 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length - i32.const 2 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 874 + i32.const 238 i32.const 3 call $~lib/builtins/abort unreachable @@ -33915,8 +23844,8 @@ local.get $41 i32.store local.get $41 - i32.const 2 - call $~lib/array/Array#push + i32.const 41 + call $~lib/array/Array#unshift drop global.get $std/array/arr local.set $41 @@ -33924,32 +23853,32 @@ local.get $41 i32.store local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/array/Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 242 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 6448 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 884 + i32.const 243 i32.const 3 call $~lib/builtins/abort unreachable @@ -33960,23 +23889,15 @@ local.get $41 i32.store local.get $41 - i32.const 6480 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 + i32.const 0 + call $~lib/array/Array#__get + i32.const 41 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 888 + i32.const 244 i32.const 3 call $~lib/builtins/abort unreachable @@ -33987,25 +23908,15 @@ local.get $41 i32.store local.get $41 - i32.const 6512 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.const 1 + call $~lib/array/Array#__get + i32.const 42 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 891 + i32.const 245 i32.const 3 call $~lib/builtins/abort unreachable @@ -34016,25 +23927,15 @@ local.get $41 i32.store local.get $41 - i32.const 6544 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.const 0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 894 + i32.const 246 i32.const 3 call $~lib/builtins/abort unreachable @@ -34045,23 +23946,15 @@ local.get $41 i32.store local.get $41 - i32.const 6576 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 + i32.const 3 + call $~lib/array/Array#__get + i32.const 44 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 902 + i32.const 247 i32.const 3 call $~lib/builtins/abort unreachable @@ -34072,14 +23965,15 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length - i32.const 8 + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 903 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable @@ -34090,23 +23984,16 @@ local.get $41 i32.store local.get $41 - i32.const 6608 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight + call $~lib/array/Array#shift global.set $std/array/i global.get $std/array/i - i32.const 10 + i32.const 41 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 905 + i32.const 257 i32.const 3 call $~lib/builtins/abort unreachable @@ -34117,55 +24004,14 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 6640 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 + call $~lib/array/Array#get:length + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 918 + i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable @@ -34176,14 +24022,14 @@ local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length - i32.const 0 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 919 + i32.const 259 i32.const 3 call $~lib/builtins/abort unreachable @@ -34195,8 +24041,18 @@ i32.store local.get $41 i32.const 0 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer @@ -34204,8 +24060,18 @@ i32.store local.get $41 i32.const 1 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 261 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer @@ -34213,429 +24079,170 @@ i32.store local.get $41 i32.const 2 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=4 - local.tee $1 - i32.store offset=4 - local.get $2 - i32.const 0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $3 - i32.store offset=20 - local.get $3 - i32.const 100 - call $std/array/Dim#set:height - local.get $3 - i32.const 80 - call $std/array/Dim#set:width - local.get $3 - call $~lib/array/Array#__uset - local.get $2 - i32.const 1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $4 - i32.store offset=24 - local.get $4 - i32.const 90 - call $std/array/Dim#set:height - local.get $4 - i32.const 90 - call $std/array/Dim#set:width - local.get $4 - call $~lib/array/Array#__uset - local.get $2 - i32.const 2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $5 - i32.store offset=28 - local.get $5 - i32.const 70 - call $std/array/Dim#set:height - local.get $5 - i32.const 95 - call $std/array/Dim#set:width - local.get $5 - call $~lib/array/Array#__uset - local.get $2 - i32.const 3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 100 - call $std/array/Dim#set:height - local.get $0 - i32.const 100 - call $std/array/Dim#set:width - local.get $0 - call $~lib/array/Array#__uset - local.get $2 - i32.const 4 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $7 - i32.store offset=32 - local.get $7 - i32.const 80 - call $std/array/Dim#set:height - local.get $7 - i32.const 110 - call $std/array/Dim#set:width - local.get $7 - call $~lib/array/Array#__uset - local.get $2 - i32.const 5 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $6 - i32.store offset=36 - local.get $6 - i32.const 110 - call $std/array/Dim#set:height - local.get $6 - i32.const 115 - call $std/array/Dim#set:width - local.get $6 - call $~lib/array/Array#__uset - local.get $2 - i32.const 6 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $8 - i32.store offset=40 - local.get $8 - i32.const 100 - call $std/array/Dim#set:height - local.get $8 - i32.const 120 - call $std/array/Dim#set:width - local.get $8 - call $~lib/array/Array#__uset - local.get $2 - i32.const 7 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $9 - i32.store offset=44 - local.get $9 - i32.const 70 - call $std/array/Dim#set:height - local.get $9 - i32.const 125 - call $std/array/Dim#set:width - local.get $9 - call $~lib/array/Array#__uset - local.get $2 - i32.const 8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $10 - i32.store offset=48 - local.get $10 - i32.const 70 - call $std/array/Dim#set:height - local.get $10 - i32.const 130 - call $std/array/Dim#set:width - local.get $10 - call $~lib/array/Array#__uset - local.get $2 - i32.const 9 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $11 - i32.store offset=52 - local.get $11 - i32.const 100 - call $std/array/Dim#set:height - local.get $11 - i32.const 135 - call $std/array/Dim#set:width - local.get $11 - call $~lib/array/Array#__uset - local.get $2 - i32.const 10 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $12 - i32.store offset=56 - local.get $12 - i32.const 75 - call $std/array/Dim#set:height - local.get $12 - i32.const 140 - call $std/array/Dim#set:width - local.get $12 - call $~lib/array/Array#__uset - local.get $2 - i32.const 11 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $13 - i32.store offset=60 - local.get $13 - i32.const 70 - call $std/array/Dim#set:height - local.get $13 - i32.const 140 - call $std/array/Dim#set:width - local.get $13 - call $~lib/array/Array#__uset - local.get $2 - global.set $std/array/inputStabArr - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - local.tee $2 - i32.store offset=12 - local.get $1 - i32.const 0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $14 - i32.store offset=64 - local.get $14 - i32.const 70 - call $std/array/Dim#set:height - local.get $14 - i32.const 95 - call $std/array/Dim#set:width - local.get $14 - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $15 - i32.store offset=68 - local.get $15 - i32.const 70 - call $std/array/Dim#set:height - local.get $15 - i32.const 125 - call $std/array/Dim#set:width - local.get $15 - call $~lib/array/Array#__uset - local.get $1 - i32.const 2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $16 - i32.store offset=72 - local.get $16 - i32.const 70 - call $std/array/Dim#set:height - local.get $16 - i32.const 130 - call $std/array/Dim#set:width - local.get $16 - call $~lib/array/Array#__uset - local.get $1 - i32.const 3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $17 - i32.store offset=76 - local.get $17 - i32.const 70 - call $std/array/Dim#set:height - local.get $17 - i32.const 140 - call $std/array/Dim#set:width - local.get $17 - call $~lib/array/Array#__uset - local.get $1 - i32.const 4 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $18 - i32.store offset=80 - local.get $18 - i32.const 75 - call $std/array/Dim#set:height - local.get $18 - i32.const 140 - call $std/array/Dim#set:width - local.get $18 - call $~lib/array/Array#__uset - local.get $1 - i32.const 5 - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $19 - i32.store offset=84 - local.get $19 - i32.const 80 - call $std/array/Dim#set:height - local.get $19 - i32.const 110 - call $std/array/Dim#set:width - local.get $19 - call $~lib/array/Array#__uset - local.get $1 - i32.const 6 + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 263 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $20 - i32.store offset=88 - local.get $20 - i32.const 90 - call $std/array/Dim#set:height - local.get $20 - i32.const 90 - call $std/array/Dim#set:width - local.get $20 - call $~lib/array/Array#__uset - local.get $1 - i32.const 7 + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 267 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $21 - i32.store offset=92 - local.get $21 - i32.const 100 - call $std/array/Dim#set:height - local.get $21 - i32.const 80 - call $std/array/Dim#set:width - local.get $21 - call $~lib/array/Array#__uset - local.get $1 - i32.const 8 + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $22 - i32.store offset=96 - local.get $22 - i32.const 100 - call $std/array/Dim#set:height - local.get $22 - i32.const 100 - call $std/array/Dim#set:width - local.get $22 - call $~lib/array/Array#__uset - local.get $1 - i32.const 9 + local.get $41 + i32.store + local.get $41 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 269 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 0 - call $std/array/Dim#constructor - local.tee $23 - i32.store offset=100 - local.get $23 - i32.const 100 - call $std/array/Dim#set:height - local.get $23 - i32.const 120 - call $std/array/Dim#set:width - local.get $23 - call $~lib/array/Array#__uset - local.get $1 - i32.const 10 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $24 - i32.store offset=104 - local.get $24 - i32.const 100 - call $std/array/Dim#set:height - local.get $24 - i32.const 135 - call $std/array/Dim#set:width - local.get $24 - call $~lib/array/Array#__uset - local.get $1 - i32.const 11 + local.get $41 + i32.store + local.get $41 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 271 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - call $std/array/Dim#constructor - local.tee $25 - i32.store offset=108 - local.get $25 - i32.const 110 - call $std/array/Dim#set:height - local.get $25 - i32.const 115 - call $std/array/Dim#set:width - local.get $25 - call $~lib/array/Array#__uset - local.get $1 - global.set $std/array/outputStabArr + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 272 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 3 + i32.const 5 i32.const 2 - i32.const 10 - i32.const 6864 + i32.const 3 + i32.const 2464 call $~lib/rt/__newArray local.tee $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - local.get $1 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 3 i32.const 2 - i32.const 10 - i32.const 6928 + i32.const 3 + i32.const 2512 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34643,35 +24250,28 @@ i32.store offset=8 local.get $41 i32.const 0 - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1057 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 i32.const 2 - i32.const 10 - i32.const 6960 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - local.get $2 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - local.get $2 - i32.const 8 + i32.const 4 + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 2 - i32.const 10 - i32.const 7024 + i32.const 2 + i32.const 3 + i32.const 2544 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34679,35 +24279,28 @@ i32.store offset=8 local.get $41 i32.const 0 - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1061 + i32.const 285 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 11 - i32.const 7088 - call $~lib/rt/__newArray - local.tee $26 - i32.store offset=112 - local.get $26 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - local.get $26 - i32.const 8 + local.get $1 + i32.const 1 + i32.const 5 + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 4 + i32.const 2 i32.const 3 - i32.const 11 - i32.const 7216 + i32.const 2576 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34715,35 +24308,48 @@ i32.store offset=8 local.get $41 i32.const 0 - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1065 + i32.const 288 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 7312 - call $~lib/rt/__newArray - local.tee $27 - i32.store offset=116 - local.get $27 + local.get $1 i32.const 0 - global.set $~argumentsLength + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + local.get $1 i32.const 0 - call $~lib/array/Array#sort@varargs - drop - local.get $27 - i32.const 5 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 2 i32.const 2 i32.const 3 - i32.const 7392 + i32.const 2624 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34756,30 +24362,23 @@ if i32.const 0 i32.const 528 - i32.const 1069 + i32.const 294 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5 + local.get $1 i32.const 2 - i32.const 7 - i32.const 7440 - call $~lib/rt/__newArray - local.tee $28 - i32.store offset=120 - local.get $28 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - local.get $28 - i32.const 5 + i32.const -1 + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 2 - i32.const 7 - i32.const 7520 + i32.const 2 + i32.const 3 + i32.const 2656 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34787,90 +24386,28 @@ i32.store offset=8 local.get $41 i32.const 0 - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1073 + i32.const 297 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 7568 - call $~lib/rt/__newArray - local.tee $29 - i32.store offset=124 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 7600 - call $~lib/rt/__newArray - local.tee $31 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7632 - call $~lib/rt/__newArray - local.tee $32 - i32.store offset=132 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 7664 - call $~lib/rt/__newArray - local.tee $33 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const -3 + i32.const -1 + call $~lib/array/Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 2 - i32.const 3 - i32.const 7712 - call $~lib/rt/__newArray - local.tee $34 - i32.store offset=140 - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createReverseOrderedArray - local.tee $30 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - i32.const 128 - call $std/array/createReverseOrderedArray - local.tee $35 - i32.store offset=148 - global.get $~lib/memory/__stack_pointer - i32.const 1024 - call $std/array/createReverseOrderedArray - local.tee $36 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - i32.const 10000 - call $std/array/createReverseOrderedArray - local.tee $37 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 512 - call $std/array/createRandomOrderedArray - local.tee $38 - i32.store offset=160 - local.get $29 - call $std/array/assertSortedDefault - local.get $31 - call $std/array/assertSortedDefault - local.get $31 - i32.const 1 i32.const 2 i32.const 3 - i32.const 7792 + i32.const 2688 call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer @@ -34883,1383 +24420,1134 @@ if i32.const 0 i32.const 528 - i32.const 1093 + i32.const 300 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $32 - call $std/array/assertSortedDefault - local.get $32 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7824 - call $~lib/rt/__newArray + local.get $1 + i32.const -1 + i32.const -3 + call $~lib/array/Array#slice local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 + call $~lib/array/Array#get:length i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1096 + i32.const 302 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $33 - call $std/array/assertSortedDefault - local.get $33 - local.get $34 + local.get $1 + i32.const 10 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length i32.const 0 - call $std/array/isArraysEqual + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#reverse + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1099 + i32.const 311 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 - call $std/array/assertSortedDefault - local.get $30 - local.get $34 - i32.const 4 - call $std/array/isArraysEqual + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $std/array/internalCapacity + i32.const 8 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1102 + i32.const 312 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $35 - call $std/array/assertSortedDefault - local.get $35 - local.get $34 - i32.const 4 - call $std/array/isArraysEqual + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1105 + i32.const 313 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $36 - call $std/array/assertSortedDefault - local.get $36 - local.get $34 - i32.const 4 - call $std/array/isArraysEqual + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1108 + i32.const 314 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $37 - call $std/array/assertSortedDefault - local.get $37 - local.get $34 - i32.const 4 - call $std/array/isArraysEqual + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1111 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $38 - call $std/array/assertSortedDefault - call $std/array/assertStableSortedForComplexObjects - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createRandomOrderedArray - local.tee $38 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 257 - call $std/array/createRandomOrderedArray - local.tee $37 - i32.store offset=156 - local.get $38 - i32.const 7888 + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted - local.get $38 - i32.const 7920 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted - local.get $37 - i32.const 7952 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 0 + i32.const 6 + i32.const 2720 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted - local.get $37 - i32.const 7984 + call $~lib/array/Array#reverse + local.tee $0 + i32.store offset=16 + i32.const 0 + local.set $1 + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.get $0 + call $~lib/array/Array#get:length + local.get $1 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 322 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + i32.const 6 + i32.const 2752 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted + call $~lib/array/Array#reverse + local.tee $1 + i32.store offset=4 + i32.const 0 + local.set $2 + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 327 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer - i32.const 2 - call $std/array/createReverseOrderedNestedArray - local.tee $37 - i32.store offset=156 - local.get $37 - i32.const 8016 + i32.const 17 + i32.const 0 + i32.const 6 + i32.const 2784 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted<~lib/array/Array> + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|2 + local.get $3 + local.get $4 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.get $2 + call $~lib/array/Array#get:length + local.get $3 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 332 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer - i32.const 512 - call $std/array/createReverseOrderedElementsArray - local.tee $37 - i32.store offset=156 - local.get $37 - i32.const 8048 + i32.const 7 + i32.const 1 + i32.const 9 + i32.const 2832 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $std/array/assertSorted> + call $~lib/array/Array#reverse + local.tee $3 + i32.store offset=20 + i32.const 0 + local.set $4 + local.get $3 + call $~lib/array/Array#get:length + local.set $5 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $3 + local.get $4 + call $~lib/array/Array#__get + local.get $3 + call $~lib/array/Array#get:length + local.get $4 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 337 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|3 + end + end global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 8240 + i32.const 8 + i32.const 1 + i32.const 9 + i32.const 2880 call $~lib/rt/__newArray - local.tee $38 - i32.store offset=160 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 8288 - call $~lib/rt/__newArray - local.tee $36 - i32.store offset=152 - local.get $38 + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#reverse + local.tee $4 + i32.store offset=24 + i32.const 0 + local.set $5 + local.get $4 + call $~lib/array/Array#get:length + local.set $6 + loop $for-loop|4 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + call $~lib/array/Array#__get + local.get $4 + call $~lib/array/Array#get:length + local.get $5 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 342 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 9 i32.const 1 - global.set $~argumentsLength + i32.const 9 + i32.const 2928 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#reverse + local.tee $5 + i32.store offset=28 i32.const 0 - call $std/array/assertSorted<~lib/string/String|null>@varargs - local.get $38 - local.get $36 + local.set $6 + local.get $5 + call $~lib/array/Array#get:length + local.set $7 + loop $for-loop|5 + local.get $6 + local.get $7 + i32.lt_s + local.set $8 + local.get $8 + if + local.get $5 + local.get $6 + call $~lib/array/Array#__get + local.get $5 + call $~lib/array/Array#get:length + local.get $6 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 347 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|5 + end + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 44 i32.const 0 - call $std/array/isArraysEqual<~lib/string/String|null> + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1150 + i32.const 355 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 400 - call $std/array/createRandomStringArray - local.tee $37 - i32.store offset=156 - local.get $37 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $std/array/assertSorted<~lib/string/String>@varargs - i32.const 2 - i32.const 0 - i32.const 35 - i32.const 8400 - call $~lib/rt/__newArray + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=164 + i32.store local.get $41 - i32.const 8496 + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 358 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=168 + i32.store local.get $41 - call $~lib/array/Array#join + i32.const 45 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 361 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 8528 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1159 + i32.const 364 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 8576 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - i32.const 8208 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 10384 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1160 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 10416 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - i32.const 10448 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 10384 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1161 + i32.const 370 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 10480 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - i32.const 10512 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 10544 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -4 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1162 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 6 - i32.const 3 - i32.const 11 - i32.const 10624 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - i32.const 10704 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 11872 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1163 + i32.const 376 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - i32.const 31 - i32.const 12016 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - i32.const 8208 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array<~lib/string/String|null>#join + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 11984 + i32.const 43 + i32.const 1 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 379 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=8 + i32.store local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const 2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1164 + i32.const 382 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 12 - i32.const 0 - call $~lib/rt/__newArray - local.tee $37 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - local.get $37 - i32.load offset=4 - local.tee $36 - i32.store offset=152 - local.get $37 - i32.const 0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $37 i32.const 1 - i32.const 0 - call $~lib/array/Array#__uset - local.get $37 i32.const 2 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $37 - local.tee $36 - i32.store offset=152 - local.get $36 - i32.const 8496 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + i32.const 10 + i32.const 2976 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 12112 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + f32.const nan:0x400000 + i32.const 0 + call $~lib/array/Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1166 + i32.const 384 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $37 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - local.get $37 - i32.load offset=4 - local.tee $38 - i32.store offset=160 - local.get $37 - i32.const 0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $37 i32.const 1 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $37 - local.tee $38 - i32.store offset=160 - local.get $38 - i32.const 8496 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=168 - local.get $41 - call $~lib/array/Array#join + i32.const 3 + i32.const 11 + i32.const 3008 + call $~lib/rt/__newArray local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 12208 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/array/Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1169 + i32.const 385 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 12304 - call $~lib/rt/__newArray - local.tee $36 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 12336 - call $~lib/rt/__newArray - local.tee $37 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 2 + i32.const 4 i32.const 2 i32.const 3 - i32.const 12368 + i32.const 3040 call $~lib/rt/__newArray - local.tee $35 - i32.store offset=148 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.store offset=24 + local.get $4 i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#lastIndexOf@varargs i32.const 3 - i32.const 12400 - call $~lib/rt/__newArray - local.tee $30 - i32.store offset=144 - local.get $36 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 8208 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1179 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $37 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 11984 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + local.get $4 + i32.const 7 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1180 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $35 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 12448 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#lastIndexOf + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1181 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 12480 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + local.get $4 + i32.const 2 + i32.const 2 + call $~lib/array/Array#lastIndexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1182 + i32.const 395 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 + local.get $4 + i32.const 2 + i32.const -2 + call $~lib/array/Array#lastIndexOf i32.const 0 - i32.const 36 - i32.const 12528 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 12560 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1184 + i32.const 396 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $4 + i32.const 2 + i32.const -1 + call $~lib/array/Array#lastIndexOf i32.const 3 - i32.const 1 - i32.const 9 - i32.const 12592 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - call $~lib/array/Array#toString - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - i32.const 12624 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1185 + i32.const 397 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 3 - i32.const 37 - i32.const 12672 - call $~lib/rt/__newArray + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=164 + i32.store local.get $41 - call $~lib/array/Array#toString + i32.const 44 + i32.const 0 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 12720 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1186 + i32.const 408 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 3 - i32.const 38 - i32.const 12800 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - call $~lib/array/Array#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 12864 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1187 + i32.const 411 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 12976 - call $~lib/rt/__newArray - local.tee $34 - i32.store offset=140 - local.get $34 - call $~lib/array/Array<~lib/string/String|null>#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 13024 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1191 + i32.const 414 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 2 - i32.const 31 - i32.const 13136 - call $~lib/rt/__newArray - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=164 - local.get $41 - call $~lib/array/Array<~lib/string/String|null>#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 13184 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1192 + i32.const 417 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 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $33 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $33 - i32.load offset=4 - local.tee $38 - i32.store offset=160 - local.get $33 - i32.const 0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 13216 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $33 - i32.const 1 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 13248 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $33 - local.tee $38 - i32.store offset=160 - local.get $38 - call $~lib/array/Array<~lib/array/Array>#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 13280 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1195 + i32.const 420 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 39 - i32.const 0 - call $~lib/rt/__newArray - local.tee $33 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $33 - i32.load offset=4 - local.tee $32 - i32.store offset=132 - local.get $33 - i32.const 0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 13328 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $33 - i32.const 1 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 13360 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $33 - local.tee $32 - i32.store offset=132 - local.get $32 - call $~lib/array/Array<~lib/array/Array>#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 13280 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1198 + i32.const 423 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 41 - i32.const 0 - call $~lib/rt/__newArray - local.tee $33 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $33 - i32.load offset=4 - local.tee $31 - i32.store offset=128 - local.get $33 - i32.const 0 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 40 - i32.const 0 - call $~lib/rt/__newArray - local.tee $29 - i32.store offset=124 - global.get $~lib/memory/__stack_pointer - local.get $29 - i32.load offset=4 - local.tee $28 - i32.store offset=120 - local.get $29 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 13392 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $29 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset - local.get $33 - local.tee $31 - i32.store offset=128 - local.get $31 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - i32.const 11984 - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1201 + i32.const 426 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $31 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - local.get $31 - i32.load offset=4 - local.tee $32 - i32.store offset=132 - local.get $31 - i32.const 0 + local.get $41 + i32.store + local.get $41 + i32.const 43 i32.const 1 - i32.const 2 - i32.const 3 - i32.const 13424 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $31 + call $~lib/array/Array#includes + local.set $4 + local.get $4 i32.const 1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 13456 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $31 - i32.const 2 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 13488 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $31 - i32.const 3 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 13520 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $31 - local.tee $32 - i32.store offset=132 - global.get $~lib/memory/__stack_pointer - local.get $32 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $31 - i32.store offset=128 - local.get $31 - call $~lib/array/Array#get:length - i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1208 + i32.const 429 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $38 - loop $for-loop|7 - local.get $38 - i32.const 10 - i32.lt_s - local.set $34 - local.get $34 - if - local.get $31 - local.get $38 - call $~lib/array/Array#__get - local.get $38 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1210 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $38 - i32.const 1 - i32.add - local.set $38 - br $for-loop|7 - end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 42 - i32.const 0 - call $~lib/rt/__newArray - local.tee $38 - i32.store offset=160 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $38 - i32.load offset=4 - local.tee $34 - i32.store offset=140 - local.get $38 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 31 - i32.const 13584 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $38 - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 31 - i32.const 13680 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $38 - i32.const 2 - i32.const 3 + local.get $41 + i32.store + local.get $41 + i32.const 43 i32.const 2 - i32.const 31 - i32.const 13808 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $38 - i32.const 3 + call $~lib/array/Array#includes + local.set $4 + local.get $4 i32.const 1 - i32.const 2 - i32.const 31 - i32.const 13872 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $38 - local.tee $34 - i32.store offset=140 - global.get $~lib/memory/__stack_pointer - local.get $34 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.tee $38 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 31 - i32.const 13904 - call $~lib/rt/__newArray - local.tee $35 - i32.store offset=148 - local.get $38 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1216 + i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $30 - loop $for-loop|8 - local.get $30 - local.get $35 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.lt_s - local.set $37 - local.get $37 - if - local.get $38 - local.get $30 - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store - local.get $41 - local.get $35 - local.get $30 - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $41 - global.get $~lib/memory/__stack_pointer - local.get $41 - i32.store offset=8 - local.get $41 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1218 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $30 - i32.const 1 - i32.add - local.set $30 - 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 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $30 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - local.get $30 - i32.load offset=4 - local.tee $37 - i32.store offset=156 - local.get $30 - i32.const 0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13968 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $30 i32.const 1 - i32.const 0 i32.const 2 - i32.const 3 - i32.const 14000 + i32.const 10 + i32.const 3088 call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $30 - local.tee $37 - i32.store offset=156 - local.get $37 - call $~lib/array/Array<~lib/array/Array>#flat local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array#get:length + f32.const nan:0x400000 i32.const 0 - i32.eq + call $~lib/array/Array#includes i32.eqz if i32.const 0 i32.const 528 - i32.const 1222 + i32.const 434 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 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $30 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - local.get $30 - i32.load offset=4 - local.tee $36 - i32.store offset=152 - local.get $30 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 14032 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $30 - i32.const 1 i32.const 1 - i32.const 2 i32.const 3 - i32.const 14064 + i32.const 11 + i32.const 3120 call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $30 - local.tee $36 - i32.store offset=152 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $36 - i32.const 14096 + local.get $41 + i32.store + local.get $41 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/array/Array#includes + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 435 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 - i32.store offset=164 + i32.store local.get $41 - call $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + drop + global.get $std/array/arr local.set $41 global.get $~lib/memory/__stack_pointer local.get $41 i32.store local.get $41 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $30 - i32.store offset=144 - local.get $30 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -36267,6626 +25555,5443 @@ if i32.const 0 i32.const 528 - i32.const 1232 + i32.const 439 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $std/array/internalCapacity + i32.const 8 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1233 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 - i32.const 1 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 0 call $~lib/array/Array#__get - i32.const 3 + i32.const 44 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1234 + i32.const 441 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 - i32.const 2 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 1 call $~lib/array/Array#__get - i32.const 2 + i32.const 42 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1235 + i32.const 442 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $30 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/array/Array#__get + i32.const 3152 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5 + i32.const 2 i32.const 3 - i32.eq + i32.const 3200 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1236 + i32.const 449 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $5 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 172 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 3248 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 450 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3280 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 i32.const 0 - i32.store - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $3 - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - 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 $2 - i32.const 1 - i32.sub - local.set $2 - 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 - ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - 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 $2 + local.get $41 i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - 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 $1 - call $~lib/string/String.__eq - if - local.get $2 - 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 $2 - i32.const 1 - i32.add - local.set $2 - 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 - ) - (func $~lib/array/Array<~lib/string/String>#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 3328 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq + call $std/array/isArraysEqual + i32.eqz if - i32.const -1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 0 + i32.const 528 + i32.const 453 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3360 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $1 - call $~lib/string/String.__eq - if - local.get $2 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + i32.const 528 + i32.const 454 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const -1 - local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3408 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 3456 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 457 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 3488 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 458 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3520 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 3568 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 3600 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 462 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3632 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 i32.const 0 - local.set $6 + i32.const 1 + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) - (local $1 i32) + local.get $41 + i32.store + local.get $41 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 3680 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 465 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 3712 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 - i32.const 8496 - local.set $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 466 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3760 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $1 - call $~lib/array/Array<~lib/string/String>#join - local.set $1 + local.get $41 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 3808 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 469 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 3840 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 0 + i32.const 528 + i32.const 470 i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length_ - local.get $1 - i32.const 1073741820 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3888 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 2 - i32.shr_u - i32.gt_u + i32.const 2 + i32.const 3 + i32.const 3936 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 528 + i32.const 473 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select + local.get $5 + i32.const 3 i32.const 2 - i32.shl - local.set $4 + i32.const 3 + i32.const 3968 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 474 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $0 - local.get $5 - call $~lib/array/Array#set:buffer - local.get $0 + i32.const 3 + i32.const 4000 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 local.get $5 - call $~lib/array/Array#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $0 - local.set $6 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $std/array/Ref#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $41 + i32.store + local.get $41 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4048 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 477 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 4080 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 + call $std/array/isArraysEqual i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 478 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - call $std/array/Ref#set:v - local.get $0 - 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/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4128 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4176 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 481 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $0 + local.get $5 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 4208 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u + call $std/array/isArraysEqual + i32.eqz if - i32.const 32 - i32.const 576 - i32.const 19 - i32.const 57 + i32.const 0 + i32.const 528 + i32.const 482 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 + i32.const 5 i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $0 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $0 - 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/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.const 3 + i32.const 4256 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 4304 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 + call $std/array/isArraysEqual i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 485 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4336 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - local.get $0 - 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/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.shl - local.set $4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4384 + call $~lib/rt/__newArray local.tee $5 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.set $6 - local.get $6 + i32.store offset=28 local.get $5 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $6 - local.get $5 + local.get $41 i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=4 - local.get $6 - local.get $4 + i32.const 2 + i32.const 3 + i32.const 4432 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $6 - local.set $7 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 489 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4464 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 490 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4512 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + call $~lib/array/Array#splice + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $1 + local.get $41 i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $41 + i32.const 0 i32.const 2 - i32.shr_s - local.set $2 + i32.const 3 + i32.const 4560 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4592 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 494 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4640 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 7 i32.const 0 + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $2 + local.get $41 i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 + i32.const 2 + i32.const 3 + i32.const 4688 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741820 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 497 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 5 i32.const 2 - i32.shr_u - i32.gt_u + i32.const 3 + i32.const 4720 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 244 - i32.const 60 + i32.const 0 + i32.const 528 + i32.const 498 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + i32.const 5 i32.const 2 i32.const 3 - i32.const 0 + i32.const 4768 call $~lib/rt/__newArray local.tee $5 - i32.store + i32.store offset=28 local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl - local.set $7 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.load offset=4 - local.get $3 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 3 + i32.const 4816 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 501 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 + local.get $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4848 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 502 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $2 - local.get $2 - local.get $1 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 8 + i32.const 4896 + call $~lib/rt/__newArray local.tee $4 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#splice + local.tee $3 + i32.store offset=20 + local.get $3 + call $~lib/array/Array#get:length i32.const 0 - local.tee $5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 506 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - i32.const 3 + i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $8 + local.tee $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 + i32.const 1 i32.const 0 - drop - local.get $7 - local.get $8 - local.get $3 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.set $9 - global.get $~lib/memory/__stack_pointer + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 + i32.const 2 + i32.const 0 + i32.const 3 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 + i32.const 3 + i32.const 0 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $2 + local.tee $4 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $3 + i32.store offset=20 + local.get $3 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 512 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 + call $~lib/array/Array#__get + i32.load + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 513 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 - local.tee $4 local.get $3 - local.get $1 - i32.sub - local.tee $5 + i32.const 1 + call $~lib/array/Array#__get + i32.load + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 514 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 516 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 i32.const 0 - local.tee $4 - local.get $5 + call $~lib/array/Array#__get + i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 517 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 + call $~lib/array/Array#__get + i32.load + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 518 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.gt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.const 2 + call $~lib/array/Array#__get + i32.load + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 519 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3 + i32.const 2 + i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load offset=4 - local.set $8 - local.get $8 + local.tee $2 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__uset local.get $1 i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + i32.const 0 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset local.get $1 + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + i32.const 0 + i32.const 528 + i32.const 524 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array#set:length_ - local.get $6 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 local.get $1 i32.const 0 - i32.lt_s + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=16 + local.get $0 if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select + local.get $0 else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 5056 + i32.const 528 + i32.const 525 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 525 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 527 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 i32.const 0 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select - local.set $2 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 528 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $2 + i32.const 1 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=16 + local.get $0 + if (result i32) + local.get $0 + else + i32.const 5056 + i32.const 528 + i32.const 529 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load i32.const 2 - i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 0 - call $~lib/rt/__newArray - local.tee $6 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 + local.get $41 + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array#set:length_ - local.get $6 - local.set $11 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 5120 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 542 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store + local.get $41 + i32.const 5152 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i i32.const 1 - drop - i32.const 0 + i32.eq i32.eqz - drop - local.get $2 + if + i32.const 0 + i32.const 528 + i32.const 545 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5184 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq i32.eqz if - i32.const 4928 - i32.const 80 - i32.const 118 - i32.const 40 + i32.const 0 + i32.const 528 + i32.const 548 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $41 + i32.store + local.get $41 + i32.const 5216 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5248 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5280 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 - i32.const 0 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select - local.set $2 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.const 12 - i32.const 0 - call $~lib/rt/__newArray - local.tee $6 + local.get $41 i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 + local.get $41 + call $~lib/array/Array#get:length i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne + i32.eq + i32.eqz if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + i32.const 0 + i32.const 528 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array#set:length_ - local.get $6 - local.set $11 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 5312 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + i32.const 5360 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 586 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $2 + i32.const 5392 + local.set $41 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 $2 - i32.store - i32.const 1 - drop + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i i32.const 1 + i32.eq i32.eqz - drop + if + i32.const 0 + i32.const 528 + i32.const 589 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.set $3 + i32.const 5424 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 592 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 5456 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 601 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $2 + local.get $41 + i32.const 5488 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#every + local.set $2 local.get $2 - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_f32) - local.set $8 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - i32.const 0 - drop - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $2 + local.get $41 + i32.const 5520 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#every + local.set $2 local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - local.set $7 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - i32.const 0 - drop - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store + local.get $41 + i32.const 5552 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#every + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.set $7 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $std/array/Dim#constructor (param $0 i32) (result i32) - (local $1 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 5584 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#every + local.set $2 + local.get $2 i32.const 0 - i32.store - local.get $0 + i32.eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $std/array/Dim#set:height - local.get $0 - i32.const 0 - call $std/array/Dim#set:width - local.get $0 - 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#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - 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 6896 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $1 - i32.store - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $2 + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - 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 7184 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $1 - i32.store - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $2 + local.get $41 + i32.const 5616 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#every + local.set $2 local.get $2 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 635 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - 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 7360 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $1 - i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 636 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $2 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - 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 7488 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $1 - i32.store - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $2 + local.get $41 + i32.const 5648 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#some + local.set $2 local.get $2 - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 646 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store + local.get $41 + i32.const 5680 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store - i32.const 0 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#some local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $2 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 649 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - 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/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 5712 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#some + local.set $2 + local.get $2 i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 657 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 658 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 + local.get $41 i32.store - i32.const 0 + local.get $41 + i32.const 5744 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#some local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 660 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.set $4 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - end - local.set $1 + local.get $41 + i32.const 5776 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#some + local.set $2 local.get $2 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 + i32.eq + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 673 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 674 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.get $1 + local.get $41 i32.const 2 - i32.shl - i32.add - local.set $8 - i32.const 1 + call $~lib/array/Array#push drop - i32.const 0 - local.set $4 - local.get $3 - i32.const 2 - i32.shl - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $8 - local.get $4 - i32.add - i32.load - local.set $10 - local.get $7 - local.get $4 - i32.add - local.get $10 - i32.store - local.get $6 - local.get $10 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $6 - local.set $11 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 5808 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 685 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $41 + i32.const 5840 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 694 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store - i32.const 1 - drop - i32.const 0 + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq i32.eqz - drop - local.get $2 + if + i32.const 0 + i32.const 528 + i32.const 695 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5872 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 + i32.eq i32.eqz if - i32.const 4928 - i32.const 80 - i32.const 118 - i32.const 40 + i32.const 0 + i32.const 528 + i32.const 698 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array<~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 5904 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 1 + i32.eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 26 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:length_ - local.get $1 - i32.const 1073741820 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length i32.const 2 - i32.shr_u - i32.gt_u + i32.eq + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 528 + i32.const 713 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - 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 $4 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 + local.get $41 + i32.store + local.get $41 i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne + call $~lib/array/Array#push drop - local.get $0 - local.get $5 - call $~lib/array/Array<~lib/array/Array>#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array<~lib/array/Array>#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#set:length_ - local.get $0 - local.set $6 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $std/array/createReverseOrderedNestedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 5936 + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#forEach + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#constructor - local.tee $1 + local.get $41 i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 738 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 local.set $2 - loop $for-loop|0 + loop $for-loop|6 local.get $2 - local.get $0 + i32.const 100 i32.lt_s - local.set $3 - local.get $3 + local.set $1 + local.get $1 if + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor - local.tee $4 - i32.store offset=4 - local.get $4 - i32.const 0 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $~lib/array/Array#__set - local.get $1 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#__set + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 + br $for-loop|6 end end - local.get $1 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/array/Array<~lib/array/Array>#__get (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 - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $41 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store + local.get $41 i32.const 1 + call $~lib/array/Array#push drop - i32.const 0 - i32.eqz + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push drop - local.get $2 - i32.eqz - if - i32.const 4928 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store + local.get $41 + i32.const 5968 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#map + local.tee $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:length_ - local.get $1 - 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 + i32.const 0 + i32.const 528 + i32.const 752 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - 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 $4 - global.get $~lib/memory/__stack_pointer - local.get $4 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $0 - local.get $5 - call $~lib/array/Array>#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array>#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array>#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array>#set:length_ - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + call $~lib/array/Array#__get + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 28 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $std/array/Proxy#set:x - local.get $0 - 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/array/Array>#__get (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $41 i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 753 + i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store - i32.const 1 - drop - i32.const 0 - i32.eqz + local.get $41 + i32.const 6000 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#map drop - local.get $2 + global.get $std/array/i + i32.const 6 + i32.eq i32.eqz if - i32.const 4928 - i32.const 80 - i32.const 118 - i32.const 40 + i32.const 0 + i32.const 528 + i32.const 762 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - 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<~lib/string/String|null>#__get (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 - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 763 + i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - 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<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.const 6032 + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 406 + i32.eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 33 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $1 - 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 + i32.const 0 + i32.const 528 + i32.const 770 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - 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 $4 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop drop - local.get $0 - local.get $5 - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array<~lib/string/String>#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array<~lib/string/String>#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $1 - local.get $0 - call $~lib/string/String#get:length - i32.ge_u + local.get $41 + i32.const 6064 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz if - i32.const 8208 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + i32.const 0 + i32.const 528 + i32.const 785 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 786 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $2 - local.set $3 + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $2 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 + local.get $41 + i32.const 6096 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#filter + local.tee $2 + i32.store offset=12 local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 0 + call $~lib/array/Array#get:length + i32.const 2 i32.eq + i32.eqz if - i32.const 8208 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 0 + i32.const 528 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 + local.get $41 i32.store - local.get $5 - local.get $0 - local.get $2 - call $~lib/memory/memory.copy - local.get $5 - local.get $2 - i32.add - local.get $1 - local.get $3 - call $~lib/memory/memory.copy - 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 - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $41 + i32.const 6128 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 805 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 528 + i32.const 806 + i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $41 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 $2 + local.get $41 i32.store - i32.const 1 - drop - i32.const 0 - i32.eqz + local.get $41 + i32.const 6160 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#filter drop - local.get $2 + global.get $std/array/i + i32.const 406 + i32.eq i32.eqz if - i32.const 4928 - i32.const 80 - i32.const 118 - i32.const 40 + i32.const 0 + i32.const 528 + i32.const 813 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $5 - local.get $7 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select + global.set $std/array/i + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6192 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/array/Array#filter + drop + global.get $std/array/i i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 + i32.eq i32.eqz if - i32.const 8208 - 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 $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else i32.const 0 + i32.const 528 + i32.const 828 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz if - local.get $0 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + i32.const 0 + i32.const 528 + i32.const 829 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $11 + local.get $41 i32.store - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - local.set $12 + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6224 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 839 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6256 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 843 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + local.get $41 + i32.const 6288 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $13 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $13 - return - end - local.get $3 + call $~lib/array/Array#reduce + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.const 1 + i32.eq i32.eqz if - i32.const 8432 - i32.const 8464 - local.get $0 - i32.load8_u - select - local.set $13 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $13 - return + i32.const 0 + i32.const 528 + i32.const 846 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $4 - i32.const 5 - local.set $5 - local.get $5 - local.get $4 - i32.add - local.get $3 - i32.mul - local.get $5 - i32.add - local.set $6 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 + local.get $41 i32.store + local.get $41 + i32.const 6320 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - local.set $8 + call $~lib/array/Array#reduce + local.set $2 + local.get $2 i32.const 0 - local.set $10 - loop $for-loop|1 - local.get $10 - local.get $3 - i32.lt_s - local.set $12 - local.get $12 - if - local.get $0 - local.get $10 - i32.add - i32.load8_u - local.set $9 - i32.const 4 - local.get $9 - i32.eqz - i32.add - local.set $5 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 8432 - i32.const 8464 - local.get $9 - select - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - local.get $4 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $4 - i32.add - local.set $8 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|1 - end - end - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.set $9 - i32.const 4 - local.get $9 + i32.ne + i32.const 0 + i32.eq i32.eqz - i32.add - local.set $5 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 8432 - i32.const 8464 - local.get $9 - select - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $13 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $13 - return + i32.const 528 + i32.const 849 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $13 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $13 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 6352 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz if - i32.const 8608 - i32.const 8736 - i32.const 373 - i32.const 5 + i32.const 0 + i32.const 528 + i32.const 857 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq i32.eqz - if - i32.const 8800 - 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 $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 if i32.const 0 - local.get $0 - i32.sub - local.set $0 + i32.const 528 + i32.const 858 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6384 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i i32.const 10 i32.eq + i32.eqz if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end + i32.const 528 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6416 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz if - local.get $3 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 528 + i32.const 873 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.set $8 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 874 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6448 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 0 + i32.const 528 + i32.const 884 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6480 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq i32.eqz if - local.get $0 - i32.load - local.set $4 - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 0 + i32.const 528 + i32.const 888 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 11 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $6 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 + local.get $41 i32.store + local.get $41 + i32.const 6512 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - local.set $8 + call $~lib/array/Array#reduceRight + local.set $2 + local.get $2 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 + i32.ne i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + i32.eq + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 6544 + local.set $41 global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s + call $~lib/array/Array#reduceRight + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 894 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6576 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz if - i32.const 8608 - i32.const 8736 - i32.const 350 - i32.const 5 + i32.const 0 + i32.const 528 + i32.const 902 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq i32.eqz if - i32.const 8800 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return + i32.const 0 + i32.const 528 + i32.const 903 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6608 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i i32.const 10 i32.eq + i32.eqz if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - i64.extend_i32_u - local.get $4 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end + i32.const 528 + i32.const 905 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.set $7 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6640 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 0 + i32.const 528 + i32.const 918 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq i32.eqz if - local.get $0 - i32.load - local.set $4 i32.const 0 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 919 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 10 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $6 + global.get $std/array/arr + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl + local.get $41 + i32.store + local.get $41 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 20 i32.const 0 - local.set $8 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $2 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $3 + i32.store offset=20 + local.get $3 + i32.const 100 + call $std/array/Dim#set:height + local.get $3 + i32.const 80 + call $std/array/Dim#set:width local.get $3 + call $~lib/array/Array#__uset + local.get $2 + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $4 + i32.store offset=24 + local.get $4 + i32.const 90 + call $std/array/Dim#set:height + local.get $4 + i32.const 90 + call $std/array/Dim#set:width + local.get $4 + call $~lib/array/Array#__uset + local.get $2 i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 70 + call $std/array/Dim#set:height + local.get $5 + i32.const 95 + call $std/array/Dim#set:width + local.get $5 + call $~lib/array/Array#__uset + local.get $2 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 100 + call $std/array/Dim#set:height + local.get $0 + i32.const 100 + call $std/array/Dim#set:width + local.get $0 + call $~lib/array/Array#__uset + local.get $2 + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $7 + i32.store offset=32 local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 + i32.const 80 + call $std/array/Dim#set:height + local.get $7 + i32.const 110 + call $std/array/Dim#set:width + local.get $7 + call $~lib/array/Array#__uset + local.get $2 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $6 + i32.store offset=36 + local.get $6 + i32.const 110 + call $std/array/Dim#set:height local.get $6 + i32.const 115 + call $std/array/Dim#set:width + local.get $6 + call $~lib/array/Array#__uset + local.get $2 + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $8 + i32.store offset=40 local.get $8 - i32.gt_s - if - local.get $7 - i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $7 - local.set $11 + i32.const 100 + call $std/array/Dim#set:height + local.get $8 + i32.const 120 + call $std/array/Dim#set:width + local.get $8 + call $~lib/array/Array#__uset + local.get $2 + i32.const 7 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $9 + i32.store offset=44 + local.get $9 + i32.const 70 + call $std/array/Dim#set:height + local.get $9 + i32.const 125 + call $std/array/Dim#set:width + local.get $9 + call $~lib/array/Array#__uset + local.get $2 + i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $10 + i32.store offset=48 + local.get $10 + i32.const 70 + call $std/array/Dim#set:height + local.get $10 + i32.const 130 + call $std/array/Dim#set:width + local.get $10 + call $~lib/array/Array#__uset + local.get $2 + i32.const 9 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $11 + i32.store offset=52 local.get $11 - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + i32.const 100 + call $std/array/Dim#set:height + local.get $11 + i32.const 135 + call $std/array/Dim#set:width + local.get $11 + call $~lib/array/Array#__uset + local.get $2 + i32.const 10 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 0 + call $std/array/Dim#constructor + local.tee $12 + i32.store offset=56 + local.get $12 + i32.const 75 + call $std/array/Dim#set:height + local.get $12 + i32.const 140 + call $std/array/Dim#set:width + local.get $12 + call $~lib/array/Array#__uset + local.get $2 + i32.const 11 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $0 - f64.const 0 - f64.eq - if - i32.const 10736 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 10768 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 10800 - i32.const 10848 - local.get $0 - f64.const 0 - f64.lt - select - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 10880 - local.get $0 - call $~lib/util/number/dtoa_core + call $std/array/Dim#constructor + local.tee $13 + i32.store offset=60 + local.get $13 + i32.const 70 + call $std/array/Dim#set:height + local.get $13 + i32.const 140 + call $std/array/Dim#set:width + local.get $13 + call $~lib/array/Array#__uset + local.get $2 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 20 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $2 + i32.store offset=12 + local.get $1 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $14 + i32.store offset=64 + local.get $14 + i32.const 70 + call $std/array/Dim#set:height + local.get $14 + i32.const 95 + call $std/array/Dim#set:width + local.get $14 + call $~lib/array/Array#__uset + local.get $1 i32.const 1 - i32.shl - local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $15 + i32.store offset=68 + local.get $15 + i32.const 70 + call $std/array/Dim#set:height + local.get $15 + i32.const 125 + call $std/array/Dim#set:width + local.get $15 + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $16 + i32.store offset=72 + local.get $16 + i32.const 70 + call $std/array/Dim#set:height + local.get $16 + i32.const 130 + call $std/array/Dim#set:width + local.get $16 + call $~lib/array/Array#__uset + local.get $1 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $17 + i32.store offset=76 + local.get $17 + i32.const 70 + call $std/array/Dim#set:height + local.get $17 + i32.const 140 + call $std/array/Dim#set:width + local.get $17 + call $~lib/array/Array#__uset + local.get $1 + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $18 + i32.store offset=80 + local.get $18 + i32.const 75 + call $std/array/Dim#set:height + local.get $18 + i32.const 140 + call $std/array/Dim#set:width + local.get $18 + call $~lib/array/Array#__uset + local.get $1 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $19 + i32.store offset=84 + local.get $19 + i32.const 80 + call $std/array/Dim#set:height + local.get $19 + i32.const 110 + call $std/array/Dim#set:width + local.get $19 + call $~lib/array/Array#__uset + local.get $1 + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $20 + i32.store offset=88 + local.get $20 + i32.const 90 + call $std/array/Dim#set:height + local.get $20 + i32.const 90 + call $std/array/Dim#set:width + local.get $20 + call $~lib/array/Array#__uset local.get $1 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 10880 + i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $21 + i32.store offset=92 + local.get $21 + i32.const 100 + call $std/array/Dim#set:height + local.get $21 + i32.const 80 + call $std/array/Dim#set:width + local.get $21 + call $~lib/array/Array#__uset local.get $1 - call $~lib/memory/memory.copy - local.get $2 - local.set $3 + i32.const 8 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) - (local $10 i32) - (local $11 i32) + i32.const 0 + call $std/array/Dim#constructor + local.tee $22 + i32.store offset=96 + local.get $22 + i32.const 100 + call $std/array/Dim#set:height + local.get $22 + i32.const 100 + call $std/array/Dim#set:width + local.get $22 + call $~lib/array/Array#__uset + local.get $1 + i32.const 9 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 0 + call $std/array/Dim#constructor + local.tee $23 + i32.store offset=100 + local.get $23 + i32.const 100 + call $std/array/Dim#set:height + local.get $23 + i32.const 120 + call $std/array/Dim#set:width + local.get $23 + call $~lib/array/Array#__uset + local.get $1 + i32.const 10 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + call $std/array/Dim#constructor + local.tee $24 + i32.store offset=104 + local.get $24 + i32.const 100 + call $std/array/Dim#set:height + local.get $24 + i32.const 135 + call $std/array/Dim#set:width + local.get $24 + call $~lib/array/Array#__uset local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + i32.const 11 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $3 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $4 - i32.const 28 - local.get $4 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $5 + call $std/array/Dim#constructor + local.tee $25 + i32.store offset=108 + local.get $25 + i32.const 110 + call $std/array/Dim#set:height + local.get $25 + i32.const 115 + call $std/array/Dim#set:width + local.get $25 + call $~lib/array/Array#__uset + local.get $1 + global.set $std/array/outputStabArr global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store + i32.const 3 + i32.const 2 + i32.const 10 + i32.const 6864 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + local.get $1 i32.const 0 - local.set $7 + global.set $~argumentsLength i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $7 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $8 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $7 - local.get $4 - if - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.set $7 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $3 + call $~lib/array/Array#sort@varargs + drop + local.get $1 i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $7 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $8 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.gt_s - if - local.get $6 - i32.const 0 - local.get $7 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $6 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 2 + i32.const 10 + i32.const 6928 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + local.get $41 i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return - end - local.get $3 + call $std/array/isArraysEqual i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - if (result i32) - local.get $4 - else - i32.const 8208 - end - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + i32.const 0 + i32.const 528 + i32.const 1057 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 10 + i32.const 6960 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 i32.const 0 - local.set $5 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.ne - if - local.get $5 - local.get $6 - call $~lib/string/String#get:length - i32.add - local.set $5 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + global.set $~argumentsLength i32.const 0 - local.set $8 + call $~lib/array/Array#sort@varargs + drop local.get $2 - call $~lib/string/String#get:length - local.set $9 + i32.const 8 + i32.const 2 + i32.const 10 + i32.const 7024 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $9 - local.get $3 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $10 + local.get $41 i32.store offset=8 + local.get $41 i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $3 - i32.lt_s - local.set $7 - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - call $~lib/string/String#get:length - local.set $11 - local.get $10 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $11 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $11 - i32.add - local.set $8 - end - local.get $9 - if - local.get $10 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $9 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $9 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.ne + call $std/array/isArraysEqual + i32.eqz if - local.get $10 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $10 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 0 + i32.const 528 + i32.const 1061 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 11 + i32.const 7088 + call $~lib/rt/__newArray + local.tee $26 + i32.store offset=112 + local.get $26 i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/array/Array#sort@varargs + drop + local.get $26 + i32.const 8 + i32.const 3 + i32.const 11 + i32.const 7216 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 0 + i32.const 528 + i32.const 1065 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 7312 + call $~lib/rt/__newArray + local.tee $27 + i32.store offset=116 + local.get $27 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $27 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 7392 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if - local.get $0 - i32.load8_s - local.set $4 - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 0 + i32.const 528 + i32.const 1069 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 11 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $6 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 7440 + call $~lib/rt/__newArray + local.tee $28 + i32.store offset=120 + local.get $28 i32.const 0 - local.set $8 + global.set $~argumentsLength i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 + call $~lib/array/Array#sort@varargs + drop + local.get $28 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 7520 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + call $std/array/isArraysEqual + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 1073 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 7568 + call $~lib/rt/__newArray + local.tee $29 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 7600 + call $~lib/rt/__newArray + local.tee $31 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7632 + call $~lib/rt/__newArray + local.tee $32 + i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + i32.const 2 + i32.const 3 + i32.const 7664 + call $~lib/rt/__newArray + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 2 + i32.const 3 + i32.const 7712 + call $~lib/rt/__newArray + local.tee $34 + i32.store offset=140 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $30 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $35 + i32.store offset=148 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $36 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $37 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $38 + i32.store offset=160 + local.get $29 + call $std/array/assertSortedDefault + local.get $31 + call $std/array/assertSortedDefault + local.get $31 i32.const 1 - i32.sub - local.set $3 - local.get $3 + i32.const 2 + i32.const 3 + i32.const 7792 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $3 + call $std/array/isArraysEqual i32.eqz if - local.get $0 - i32.load16_u - local.set $4 i32.const 0 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 1093 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 10 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $6 + local.get $32 + call $std/array/assertSortedDefault + local.get $32 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7824 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - i32.const 0 - local.set $8 + local.get $41 + i32.store offset=8 + local.get $41 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + call $std/array/isArraysEqual + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 1096 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i32) - global.get $~lib/memory/__stack_pointer + local.get $33 + call $std/array/assertSortedDefault + local.get $33 + local.get $34 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1099 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + call $std/array/assertSortedDefault + local.get $30 + local.get $34 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1102 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $35 + call $std/array/assertSortedDefault + local.get $35 + local.get $34 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if - i32.const 8608 - i32.const 8736 - i32.const 401 - i32.const 5 + i32.const 0 + i32.const 528 + i32.const 1105 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 0 - i64.ne + local.get $36 + call $std/array/assertSortedDefault + local.get $36 + local.get $34 + i32.const 4 + call $std/array/isArraysEqual i32.eqz if - i32.const 8800 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return + i32.const 0 + i32.const 528 + i32.const 1108 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 10 - i32.eq + local.get $37 + call $std/array/assertSortedDefault + local.get $37 + local.get $34 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end + i32.const 0 + i32.const 528 + i32.const 1111 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.set $9 + local.get $38 + call $std/array/assertSortedDefault + call $std/array/assertStableSortedForComplexObjects global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $38 + i32.store offset=160 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $37 + i32.store offset=156 + local.get $38 + i32.const 7888 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted + local.get $38 + i32.const 7920 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted + local.get $37 + i32.const 7952 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted + local.get $37 + i32.const 7984 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $std/array/createReverseOrderedNestedArray + local.tee $37 + i32.store offset=156 + local.get $37 + i32.const 8016 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createReverseOrderedElementsArray + local.tee $37 + i32.store offset=156 + local.get $37 + i32.const 8048 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $std/array/assertSorted> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 31 + i32.const 8240 + call $~lib/rt/__newArray + local.tee $38 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 31 + i32.const 8288 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=152 + local.get $38 i32.const 1 - i32.sub - local.set $3 - local.get $3 + global.set $~argumentsLength i32.const 0 - i32.lt_s - if - i32.const 8208 - 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 $3 + call $std/array/assertSorted<~lib/string/String|null>@varargs + local.get $38 + local.get $36 + i32.const 0 + call $std/array/isArraysEqual<~lib/string/String|null> i32.eqz if - local.get $0 - i64.load - local.set $4 i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa64 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + i32.const 528 + i32.const 1150 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 20 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 20 - i32.add - local.set $6 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl + i32.const 400 + call $std/array/createRandomStringArray + local.tee $37 + i32.store offset=156 + local.get $37 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store + global.set $~argumentsLength i32.const 0 - local.set $8 + call $std/array/assertSorted<~lib/string/String>@varargs + i32.const 2 i32.const 0 - local.set $10 - loop $for-loop|0 - local.get $10 - local.get $3 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $0 - local.get $10 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end + i32.const 35 + i32.const 8400 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 8496 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 8528 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1159 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + i32.const 2 + i32.const 3 + i32.const 8576 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 8208 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 10384 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + i32.const 528 + i32.const 1160 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $12 + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 10416 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10448 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end + local.get $41 + i32.const 10384 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - i32.const 8608 - i32.const 8736 - i32.const 431 - i32.const 5 + i32.const 0 + i32.const 528 + i32.const 1161 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 0 - i64.ne + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 10480 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10512 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 10544 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz if - i32.const 8800 - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.set $8 - local.get $4 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.set $7 - local.get $0 - local.set $9 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $9 - local.get $6 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $4 - local.get $9 - local.get $8 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 528 + i32.const 1162 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.set $10 + i32.const 6 + i32.const 3 + i32.const 11 + i32.const 10624 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10704 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 8208 - 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 $3 + local.get $41 + i32.const 11872 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz if - local.get $0 - i64.load - local.set $4 - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.wrap_i64 - i64.extend_i32_s - i32.const 10 - call $~lib/util/number/itoa64 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + i32.const 0 + i32.const 528 + i32.const 1163 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 21 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 21 - i32.add - local.set $6 + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 12016 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 8208 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - i32.const 0 - local.set $8 - i32.const 0 - local.set $10 - loop $for-loop|0 - local.get $10 - local.get $3 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $0 - local.get $10 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + local.get $41 + i32.const 11984 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - 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 $7 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + i32.const 528 + i32.const 1164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 12 i32.const 0 - i32.store - local.get $1 + call $~lib/rt/__newArray + local.tee $37 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $37 + i32.load offset=4 + local.tee $36 + i32.store offset=152 + local.get $37 + i32.const 0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $37 i32.const 1 - i32.sub - local.set $3 - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 8208 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $3 + call $~lib/array/Array#__uset + local.get $37 + i32.const 2 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $37 + local.tee $36 + i32.store offset=152 + local.get $36 + i32.const 8496 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 12112 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz if - local.get $0 - i32.load8_u - local.set $4 i32.const 0 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 1166 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 10 - local.get $5 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $6 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 8 i32.const 0 - local.set $8 + call $~lib/rt/__newArray + local.tee $37 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $37 + i32.load offset=4 + local.tee $38 + i32.store offset=160 + local.get $37 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $9 - local.get $8 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $9 - local.get $8 - local.get $7 - local.get $8 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $37 i32.const 1 - i32.shl - i32.add - local.get $9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $8 - local.get $6 - local.get $8 - i32.gt_s + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $37 + local.tee $38 + i32.store offset=160 + local.get $38 + i32.const 8496 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=168 + local.get $41 + call $~lib/array/Array#join + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 12208 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - local.get $7 i32.const 0 - local.get $8 - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + i32.const 528 + i32.const 1169 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 12304 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 12336 + call $~lib/rt/__newArray + local.tee $37 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 12368 + call $~lib/rt/__newArray + local.tee $35 + i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + i32.const 2 + i32.const 3 + i32.const 12400 + call $~lib/rt/__newArray + local.tee $30 + i32.store offset=144 + local.get $36 + call $~lib/array/Array#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 8208 + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz - drop - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $2 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $1 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $3 - local.get $6 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - else - local.get $6 - i32.load offset=12 - end - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + if + i32.const 0 + i32.const 528 + i32.const 1179 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.shl - local.set $7 + local.get $37 + call $~lib/array/Array#toString + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $8 + local.get $41 i32.store + local.get $41 + i32.const 11984 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 + local.get $41 i32.store offset=8 - local.get $9 - local.get $8 - i32.store offset=4 - local.get $9 - local.get $8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + call $~lib/array/Array#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $9 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $10 + local.get $41 + i32.const 12448 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + call $~lib/array/Array#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 12480 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $2 - i32.lt_s - local.set $5 - local.get $5 - if - block $for-continue|1 - local.get $1 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.eqz - if - br $for-continue|1 - end - local.get $6 - i32.load offset=12 - i32.const 2 - i32.shl - local.set $11 - local.get $8 - local.get $10 - i32.add - local.get $6 - i32.load offset=4 - local.get $11 - call $~lib/memory/memory.copy - local.get $10 - local.get $11 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end + i32.const 36 + i32.const 12528 + call $~lib/rt/__newArray + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 12560 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1184 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - drop - local.get $9 - local.set $12 + i32.const 3 + i32.const 1 + i32.const 9 + i32.const 12592 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 12624 + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz - drop - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $2 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $1 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $3 - local.get $6 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - else - local.get $6 - i32.load offset=12 - end - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + if + i32.const 0 + i32.const 528 + i32.const 1185 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.shl - local.set $7 + i32.const 3 + i32.const 3 + i32.const 37 + i32.const 12672 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $8 + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store + local.get $41 + i32.const 12720 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 + local.get $41 i32.store offset=8 - local.get $9 - local.get $8 - i32.store offset=4 - local.get $9 - local.get $8 - i32.store - local.get $9 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $2 - i32.lt_s - local.set $5 - local.get $5 - if - block $for-continue|1 - local.get $1 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.eqz - if - br $for-continue|1 - end - local.get $6 - i32.load offset=12 - i32.const 2 - i32.shl - local.set $11 - local.get $8 - local.get $10 - i32.add - local.get $6 - i32.load offset=4 - local.get $11 - call $~lib/memory/memory.copy - local.get $10 - local.get $11 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - i32.const 1 - drop - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $8 - local.get $11 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1186 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $12 + i32.const 4 + i32.const 3 + i32.const 38 + i32.const 12800 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store + local.get $41 + i32.const 12864 + local.set $41 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 1187 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length_ - local.get $1 - i32.const 1073741820 + global.get $~lib/memory/__stack_pointer + i32.const 7 i32.const 2 - i32.shr_u - i32.gt_u + i32.const 31 + i32.const 12976 + call $~lib/rt/__newArray + local.tee $34 + i32.store offset=140 + local.get $34 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 13024 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 528 + i32.const 1191 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select + i32.const 4 i32.const 2 - i32.shl - local.set $4 + i32.const 31 + i32.const 13136 + call $~lib/rt/__newArray + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $0 - local.get $5 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array#set:length_ - local.get $0 - local.set $6 + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $std/array/ArrayU32#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $41 + i32.store + local.get $41 + i32.const 13184 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1192 + 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 26 + i32.const 0 + call $~lib/rt/__newArray + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer + local.get $33 + i32.load offset=4 + local.tee $38 + i32.store offset=160 + local.get $33 i32.const 0 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 13216 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $33 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 13248 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $33 + local.tee $38 + i32.store offset=160 + local.get $38 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 i32.store - local.get $0 + local.get $41 + i32.const 13280 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 44 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 528 + i32.const 1195 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - local.get $0 - 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/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + i32.const 2 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $33 + i32.load offset=4 + local.tee $32 + i32.store offset=132 + local.get $33 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 13328 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $33 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 13360 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $33 + local.tee $32 + i32.store offset=132 + local.get $32 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u + local.get $41 + i32.const 13280 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 244 - i32.const 60 + i32.const 0 + i32.const 528 + i32.const 1198 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 2 - i32.const 7 + i32.const 41 i32.const 0 call $~lib/rt/__newArray - local.tee $5 - i32.store - local.get $5 + local.tee $33 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $33 i32.load offset=4 - local.set $6 - local.get $2 + local.tee $31 + i32.store offset=128 + local.get $33 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 2 - i32.shl - local.set $7 + i32.const 40 i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 + call $~lib/rt/__newArray + local.tee $29 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + local.get $29 i32.load offset=4 - local.get $3 + local.tee $28 + i32.store offset=120 + local.get $29 + i32.const 0 + i32.const 1 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 + i32.const 7 + i32.const 13392 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $29 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset + local.get $33 + local.tee $31 + i32.store offset=128 + local.get $31 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + local.get $41 + i32.store + local.get $41 + i32.const 11984 + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 26 i32.const 0 - i32.store + call $~lib/rt/__newArray + local.tee $31 + i32.store offset=128 global.get $~lib/memory/__stack_pointer + local.get $31 + i32.load offset=4 + local.tee $32 + i32.store offset=132 + local.get $31 i32.const 0 + i32.const 1 i32.const 2 - i32.const 7 - i32.const 0 + i32.const 3 + i32.const 13424 call $~lib/rt/__newArray - local.tee $2 - i32.store + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $31 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 13456 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $31 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 13488 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $31 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 13520 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $31 + local.tee $32 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + local.get $32 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $31 + i32.store offset=128 + local.get $31 + call $~lib/array/Array#get:length + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1208 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select + local.set $38 + loop $for-loop|7 + local.get $38 + i32.const 10 i32.lt_s - local.set $5 - local.get $5 + local.set $34 + local.get $34 if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $31 + local.get $38 + call $~lib/array/Array#__get + local.get $38 + i32.eq + i32.eqz if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop + i32.const 0 + i32.const 528 + i32.const 1210 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $38 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $38 + br $for-loop|7 end end - local.get $2 - local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 42 i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 + call $~lib/rt/__newArray + local.tee $38 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + local.get $38 + i32.load offset=4 + local.tee $34 + i32.store offset=140 + local.get $38 i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 + i32.const 1 + i32.const 2 + i32.const 31 + i32.const 13584 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $38 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 13680 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $38 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 13808 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $38 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 31 + i32.const 13872 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $38 + local.tee $34 + i32.store offset=140 + global.get $~lib/memory/__stack_pointer + local.get $34 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat + local.tee $38 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 31 + i32.const 13904 + call $~lib/rt/__newArray + local.tee $35 + i32.store offset=148 + local.get $38 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.const 8 + i32.eq + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 1216 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 + local.set $30 + loop $for-loop|8 + local.get $30 + local.get $35 + call $~lib/array/Array<~lib/string/String|null>#get:length i32.lt_s - select + local.set $37 + local.get $37 + if + local.get $38 + local.get $30 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + local.get $35 + local.get $30 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1218 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $30 + i32.const 1 + i32.add + local.set $30 + br $for-loop|8 + end end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.const 7 + i32.const 2 + i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 + local.tee $30 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + local.get $30 i32.load offset=4 - local.get $1 + local.tee $37 + i32.store offset=156 + local.get $30 + i32.const 0 + i32.const 0 i32.const 2 - i32.shl - i32.add - local.set $8 + i32.const 3 + i32.const 13968 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $30 + i32.const 1 i32.const 0 - drop - local.get $7 - local.get $8 - local.get $3 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 3 + i32.const 14000 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $30 + local.tee $37 + i32.store offset=156 + local.get $37 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $41 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $41 i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 + local.get $41 + call $~lib/array/Array#get:length i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 + i32.eq + i32.eqz + if i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 528 + i32.const 1222 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 - i32.const 0 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.const 7 + i32.const 2 + i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 + local.tee $30 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + local.get $30 i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 + local.tee $36 + i32.store offset=152 + local.get $30 + i32.const 0 + i32.const 1 i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 + i32.const 3 + i32.const 14032 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $30 + i32.const 1 + i32.const 1 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne + i32.const 3 + i32.const 14064 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $30 + local.tee $36 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.const 14096 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=164 + local.get $41 + call $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $30 + i32.store offset=144 + local.get $30 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + i32.const 0 + i32.const 528 + i32.const 1232 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array#set:length_ - local.get $6 - local.set $11 + local.get $30 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1236 + 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 4 + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -42905,26 +31010,26 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 6 + i32.const 3 call $~lib/rt/itcms/__new local.tee $0 i32.store end local.get $0 i32.const 0 - call $~lib/array/Array#set:buffer + call $~lib/array/Array#set:buffer local.get $0 i32.const 0 - call $~lib/array/Array#set:dataStart + call $~lib/array/Array#set:dataStart local.get $0 i32.const 0 - call $~lib/array/Array#set:byteLength + call $~lib/array/Array#set:byteLength local.get $0 i32.const 0 - call $~lib/array/Array#set:length_ + call $~lib/array/Array#set:length_ local.get $1 i32.const 1073741820 - i32.const 0 + i32.const 2 i32.shr_u i32.gt_u if @@ -42943,7 +31048,7 @@ local.get $3 i32.gt_u select - i32.const 0 + i32.const 2 i32.shl local.set $4 global.get $~lib/memory/__stack_pointer @@ -42958,16 +31063,16 @@ drop local.get $0 local.get $5 - call $~lib/array/Array#set:buffer + call $~lib/array/Array#set:buffer local.get $0 local.get $5 - call $~lib/array/Array#set:dataStart + call $~lib/array/Array#set:dataStart local.get $0 local.get $4 - call $~lib/array/Array#set:byteLength + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/array/Array#set:length_ + call $~lib/array/Array#set:length_ local.get $0 local.set $6 global.get $~lib/memory/__stack_pointer @@ -42976,7 +31081,7 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) - (func $std/array/ArrayU8#constructor (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Ref#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -42990,428 +31095,97 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 45 + i32.const 4 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - local.get $0 - 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/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741820 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 244 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 0 - i32.shl - local.set $7 - i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - end - local.set $2 - local.get $2 local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 + call $std/array/Ref#set:v local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.set $8 - i32.const 0 - drop - local.get $7 - local.get $8 - local.get $3 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.set $9 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $2 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 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 $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 - i32.const 0 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 6 + local.get $0 i32.const 0 - call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $7 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 i32.const 0 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 i32.const 0 - i32.shl - call $~lib/memory/memory.copy + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $1 + i32.const 1073741820 local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne + i32.shr_u + i32.gt_u if - local.get $9 - local.get $8 - local.get $10 - i32.const 0 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 0 - i32.shl - call $~lib/memory/memory.copy + i32.const 32 + i32.const 576 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array#set:length_ - local.get $6 - local.set $11 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $0 + 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 $11 + local.get $4 ) - (func $std/array/ArrayStr#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -43425,8 +31199,8 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 46 + i32.const 12 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -43434,7 +31208,8 @@ global.get $~lib/memory/__stack_pointer local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 i32.store local.get $0 @@ -43445,10 +31220,11 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -43458,62 +31234,72 @@ i32.const 0 i32.store local.get $0 - i32.load offset=12 - local.set $2 local.get $1 + i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 0 + local.get $3 + call $~lib/rt/__newBuffer + local.tee $5 + i32.store + i32.const 16 local.get $2 - local.get $1 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + local.get $5 i32.const 0 - i32.ge_s - select + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add i32.load - local.tee $3 + local.tee $1 i32.store - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $3 - i32.eqz - if - i32.const 4928 - i32.const 80 - i32.const 151 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.set $4 + local.get $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.shr_s + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -43521,12 +31307,6 @@ (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) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -43538,13 +31318,8 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 local.get $1 i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select local.set $3 local.get $2 local.get $3 @@ -43566,7 +31341,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 - i32.const 33 + i32.const 3 i32.const 0 call $~lib/rt/__newArray local.tee $5 @@ -43578,291 +31353,145 @@ i32.const 2 i32.shl local.set $7 - i32.const 1 + i32.const 0 drop + local.get $6 local.get $0 i32.load offset=4 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $7 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.add - i32.load - local.set $11 - local.get $6 - local.get $9 - i32.add - local.get $11 - i32.store - local.get $5 - local.get $11 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $9 - i32.const 4 - i32.add - local.set $9 - br $for-loop|0 - end - end + local.get $7 + memory.copy local.get $6 local.get $7 i32.add - local.set $6 local.get $1 i32.load offset=4 - local.set $9 local.get $3 i32.const 2 i32.shl - local.set $10 - i32.const 0 - local.set $11 - loop $for-loop|1 - local.get $11 - local.get $10 - i32.lt_u - local.set $12 - local.get $12 - if - local.get $9 - local.get $11 - i32.add - i32.load - local.set $13 - local.get $6 - local.get $11 - i32.add - local.get $13 - i32.store - local.get $5 - local.get $13 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $11 - i32.const 4 - i32.add - local.set $11 - br $for-loop|1 - end - end + memory.copy local.get $5 - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - ) - (func $~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $2 - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $8 ) - (func $~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 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 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 33 i32.const 0 - call $~lib/rt/__newArray - local.tee $2 i32.store - i32.const 0 - local.set $3 local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|0 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $1 local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 + local.get $3 + local.tee $4 local.get $5 - local.get $6 + local.get $4 i32.lt_s select - i32.lt_s - local.set $5 - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end end + local.set $1 local.get $2 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 i32.lt_s - if - i32.const 1152 - i32.const 80 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $2 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select end - local.get $0 - i32.load offset=4 local.set $2 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.load - local.tee $3 - i32.store local.get $1 - i32.const 1 i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 4 - i32.add + local.tee $4 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 1 - drop - local.get $2 - local.get $4 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $7 + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add + local.set $8 i32.const 0 - i32.store - local.get $0 - local.get $4 - call $~lib/array/Array<~lib/string/String>#set:length_ + drop + local.get $7 + local.get $8 local.get $3 - local.set $5 + i32.const 2 + i32.shl + memory.copy + local.get $6 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -43887,8 +31516,8 @@ i32.const 0 i32.lt_s if (result i32) - local.get $1 local.get $3 + local.get $1 i32.add local.tee $4 i32.const 0 @@ -43909,11 +31538,110 @@ end local.set $1 local.get $2 + local.tee $4 + local.get $3 + local.get $1 + i32.sub + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.tee $5 + i32.const 0 + local.tee $4 + local.get $5 + local.get $4 + i32.gt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $7 + local.get $0 + i32.load offset=4 + local.set $8 + local.get $8 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $9 + local.get $7 + local.get $9 + local.get $2 + i32.const 2 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $10 + local.get $3 + local.get $10 + i32.ne + if + local.get $9 + local.get $8 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $10 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $0 + local.get $3 + local.get $2 + i32.sub + call $~lib/array/Array#set:length_ + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 i32.const 0 i32.lt_s if (result i32) - local.get $2 local.get $3 + local.get $1 i32.add local.tee $4 i32.const 0 @@ -43923,7 +31651,7 @@ i32.gt_s select else - local.get $2 + local.get $1 local.tee $5 local.get $3 local.tee $4 @@ -43932,22 +31660,29 @@ i32.lt_s select end - local.set $2 + local.set $1 local.get $2 + local.tee $4 + local.get $3 local.get $1 i32.sub - local.tee $4 - i32.const 0 local.tee $5 local.get $4 local.get $5 + i32.lt_s + select + local.tee $5 + i32.const 0 + local.tee $4 + local.get $5 + local.get $4 i32.gt_s select - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 2 - i32.const 33 + i32.const 8 i32.const 0 call $~lib/rt/__newArray local.tee $6 @@ -43957,47 +31692,45 @@ local.set $7 local.get $0 i32.load offset=4 + local.set $8 + local.get $8 local.get $1 i32.const 2 i32.shl i32.add - local.set $8 - i32.const 1 - drop - i32.const 0 - local.set $4 - local.get $3 + local.set $9 + local.get $7 + local.get $9 + local.get $2 i32.const 2 i32.shl - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.lt_u - local.set $9 + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $10 + local.get $3 + local.get $10 + i32.ne + if local.get $9 - if - local.get $8 - local.get $4 - i32.add - i32.load - local.set $10 - local.get $7 - local.get $4 - i32.add - local.get $10 - i32.store - local.get $6 - local.get $10 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $while-continue|0 - end + local.get $8 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $10 + i32.sub + i32.const 2 + i32.shl + memory.copy end + local.get $0 + local.get $3 + local.get $2 + i32.sub + call $~lib/array/Array#set:length_ local.get $6 local.set $11 global.get $~lib/memory/__stack_pointer @@ -44006,7 +31739,63 @@ global.set $~lib/memory/__stack_pointer local.get $11 ) - (func $~lib/array/Array<~lib/string/String>#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__get (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4928 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + 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 $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -44073,7 +31862,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.const 2 - i32.const 33 + i32.const 12 i32.const 0 call $~lib/rt/__newArray local.tee $6 @@ -44095,7 +31884,7 @@ local.get $2 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $2 i32.add @@ -44115,23 +31904,247 @@ i32.sub i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy + end + local.get $0 + local.get $3 + local.get $2 + i32.sub + call $~lib/array/Array#set:length_ + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/array/Array#__get (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $2 + 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#map (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_f32) + local.set $8 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + i32.const 0 + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + local.set $7 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + i32.const 0 + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - local.get $0 local.get $3 - local.get $2 - i32.sub - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $6 - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -44140,30 +32153,106 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + i32.const 0 + local.set $3 + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + local.tee $5 + local.get $0 + i32.load offset=12 + local.tee $6 + local.get $5 + local.get $6 + i32.lt_s + select + i32.lt_s + local.set $5 + local.get $5 + if + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + local.get $3 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.get $6 + call $~lib/array/Array#push + drop end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end + end + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $std/array/Dim#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 8496 - local.tee $1 + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 i32.store end local.get $0 - local.get $1 - call $~lib/array/Array#join - local.set $2 + i32.const 0 + call $std/array/Dim#set:height + local.get $0 + i32.const 0 + call $std/array/Dim#set:width + local.get $0 + 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 ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44182,20 +32271,24 @@ 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 0 + drop i32.const 1 drop - i32.const 0 + i32.const 4 + i32.const 4 + i32.eq drop - i32.const 14192 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 6896 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 i32.store end local.get $0 local.get $1 - call $~lib/array/Array#sort + call $~lib/array/Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44203,7 +32296,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44222,13 +32315,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8496 + 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 7184 + br $~lib/util/sort/COMPARATOR|inlined.0 + end local.tee $1 i32.store end local.get $0 local.get $1 - call $~lib/array/Array#join + call $~lib/array/Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44236,7 +32340,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44255,22 +32359,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 (result i32) - i32.const 0 - drop - i32.const 0 - drop + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 14224 - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 7360 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 i32.store end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#sort + call $~lib/array/Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44278,7 +32382,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44297,480 +32401,275 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8496 + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 7488 + br $~lib/util/sort/COMPARATOR|inlined.0 + end local.tee $1 i32.store end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#join - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#get:dataStart (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:dataStart - 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:std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $std/array/ArrayU32#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#get:length (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - ) - (func $export:~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#every (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 $~lib/array/Array#every - 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:~lib/array/Array#findIndex (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 $~lib/array/Array#findIndex - 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:~lib/array/Array#findLastIndex (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 $~lib/array/Array#findLastIndex - 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:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#at - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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 $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill@varargs - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes@varargs - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf@varargs - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf@varargs - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#push - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#concat (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 $~lib/array/Array#concat - 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:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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 $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin@varargs - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $export:~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - 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:~lib/array/Array#forEach (param $0 i32) (param $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 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array#forEach - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#filter (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 $~lib/array/Array#filter + call $~lib/array/Array#sort 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:~lib/array/Array#shift (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $0 - call $~lib/array/Array#shift - local.set $1 + call $~lib/array/Array#constructor + local.tee $1 + i32.store + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $1 + local.get $2 + local.get $0 + i32.const 1 + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + 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 ) - (func $export:~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createRandomOrderedArray (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.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 + i32.const 0 local.get $0 - local.get $1 - call $~lib/array/Array#some + call $~lib/array/Array#constructor + local.tee $1 + i32.store + i32.const 0 local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) - (func $export:~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store local.get $0 + i32.load offset=12 + local.set $3 local.get $1 - call $~lib/array/Array#unshift + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $1 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $2 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + end local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 + i32.const 2 + i32.const 20 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 i32.store + local.get $6 + i32.load offset=4 + local.set $7 local.get $0 + i32.load offset=4 local.get $1 - local.get $2 - call $~lib/array/Array#slice@varargs - local.set $3 + i32.const 2 + i32.shl + i32.add + local.set $8 + i32.const 1 + drop + i32.const 0 + local.set $4 + local.get $3 + i32.const 2 + i32.shl + local.set $5 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $9 + local.get $9 + if + local.get $8 + local.get $4 + i32.add + i32.load + local.set $10 + local.get $7 + local.get $4 + i32.add + local.get $10 + i32.store + local.get $6 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $6 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 ) - (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44778,12 +32677,46 @@ 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 $1 + local.get $0 + i32.load offset=12 + 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 $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4928 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end local.get $2 - call $~lib/array/Array#splice@varargs local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44791,129 +32724,305 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $export:~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.store + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - call $~lib/array/Array#reverse - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:length_ local.get $1 - ) - (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer + i32.const 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 $1 + local.tee $2 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.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $5 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#set:byteLength local.get $0 local.get $1 - call $~lib/array/Array#sort@varargs - local.set $2 + call $~lib/array/Array<~lib/array/Array>#set:length_ + local.get $0 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $6 ) - (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 local.get $0 - local.get $1 - call $~lib/array/Array#join@varargs + call $~lib/array/Array<~lib/array/Array>#constructor + local.tee $1 + i32.store + i32.const 0 local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/array/Array#constructor + local.tee $4 + i32.store offset=4 + local.get $4 + i32.const 0 + local.get $0 + i32.const 1 + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set + local.get $1 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $5 ) - (func $export:~lib/array/Array#flat (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__get (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 call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store + local.get $1 local.get $0 - call $~lib/array/Array#flat - local.set $1 + i32.load offset=12 + 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 $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4928 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + 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 ) - (func $export:~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:length_ + local.get $1 + 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 $1 + 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 $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 - i32.store + local.get $5 + call $~lib/array/Array>#set:buffer local.get $0 - call $~lib/array/Array#toString - 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:~lib/array/Array#get:dataStart (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/array/Array>#set:dataStart local.get $0 - i32.store + local.get $4 + call $~lib/array/Array>#set:byteLength local.get $0 - call $~lib/array/Array#get:dataStart - local.set $1 + local.get $1 + call $~lib/array/Array>#set:length_ + local.get $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 $1 + local.get $6 ) - (func $export:std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44921,11 +33030,22 @@ 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 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 local.get $1 - call $std/array/ArrayU8#constructor@varargs + call $std/array/Proxy#set:x + local.get $0 local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -44933,196 +33053,312 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $export:~lib/array/Array#get:length (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array>#__get (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 call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - 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 - ) - (func $export:~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.load offset=12 + 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 $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#set:length + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4928 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $export:~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer 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 + i32.load offset=12 + 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 $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#every - local.set $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $2 + local.set $3 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 $3 ) - (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:length_ local.get $1 - call $~lib/array/Array#findIndex - local.set $2 - global.get $~lib/memory/__stack_pointer + 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 $1 + local.tee $2 i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 local.get $2 - ) - (func $export:~lib/array/Array#findLastIndex (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 $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 i32.store offset=4 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $0 + local.get $5 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array<~lib/string/String>#set:byteLength local.get $0 local.get $1 - call $~lib/array/Array#findLastIndex - local.set $2 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $0 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $6 ) - (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (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 call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 8208 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 i32.store + local.get $2 local.get $0 local.get $1 - call $~lib/array/Array#at - local.set $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $2 + 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 ) - (func $export:~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 local.get $2 local.get $3 - call $~lib/array/Array#fill@varargs - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.set $4 local.get $4 - ) - (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 0 + i32.eq + if + i32.const 8208 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 i32.store + local.get $5 local.get $0 - local.get $1 local.get $2 - call $~lib/array/Array#includes@varargs - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + memory.copy + local.get $5 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#indexOf@varargs - local.set $3 + local.get $3 + memory.copy + 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 $3 + local.get $6 ) - (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45130,12 +33366,46 @@ 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 $1 + local.get $0 + i32.load offset=12 + 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 $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4928 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end local.get $2 - call $~lib/array/Array#lastIndexOf@varargs local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45143,939 +33413,3006 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (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 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 $~lib/string/String#get:length + local.set $3 local.get $1 - call $~lib/array/Array#push - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $6 local.get $2 - ) - (func $export:~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $5 + local.get $7 + local.tee $4 + local.get $5 + local.get $4 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $10 + local.get $10 + i32.eqz + if + i32.const 8208 + 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 $8 + i32.eqz + if (result i32) + local.get $9 + local.get $3 + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + 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 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 i32.store + local.get $11 + local.get $0 + local.get $8 + i32.add + local.get $10 + memory.copy + local.get $11 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array#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 + local.get $12 ) - (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~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 local.get $1 - local.get $2 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end local.get $3 - call $~lib/array/Array#copyWithin@varargs + i32.eqz + if + i32.const 8432 + i32.const 8464 + local.get $0 + i32.load8_u + select + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $2 + call $~lib/string/String#get:length local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 5 + local.set $5 + local.get $5 local.get $4 - ) - (func $export:~lib/array/Array#pop (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 + i32.add + local.get $3 + i32.mul + local.get $5 + i32.add + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store + i32.const 0 + local.set $8 + i32.const 0 + local.set $10 + loop $for-loop|1 + local.get $10 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 + if + local.get $0 + local.get $10 + i32.add + i32.load8_u + local.set $9 + i32.const 4 + local.get $9 + i32.eqz + i32.add + local.set $5 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 8432 + i32.const 8464 + local.get $9 + select + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + local.get $4 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $4 + i32.add + local.set $8 + end + local.get $10 + i32.const 1 + i32.add + local.set $10 + br $for-loop|1 + end + end local.get $0 - call $~lib/array/Array#pop - local.set $1 + local.get $3 + i32.add + i32.load8_u + local.set $9 + i32.const 4 + local.get $9 + i32.eqz + i32.add + local.set $5 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 8432 + i32.const 8464 + local.get $9 + select + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $7 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $13 ) - (func $export:~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.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 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 8608 + i32.const 8736 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 8800 + 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 $0 + i32.const 31 + i32.shr_u + local.set $2 + local.get $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end local.get $1 - call $~lib/array/Array#forEach + i32.const 10 + i32.eq + if + local.get $0 + call $~lib/util/number/decimalCount32 + local.get $2 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $7 + local.get $0 + local.set $6 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.get $2 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $7 + local.get $0 + local.set $6 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + i64.extend_i32_u + local.get $5 + call $~lib/util/number/utoa_hex_lut + else + local.get $0 + local.set $4 + local.get $4 + i64.extend_i32_u + local.get $1 + call $~lib/util/number/ulog_base + local.get $2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i64.extend_i32_u + local.get $7 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + 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 ) - (func $export:~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 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 $~lib/array/Array#filter - 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:~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + i32.load + local.set $4 + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 11 + local.get $5 + i32.add + local.get $3 + i32.mul + i32.const 11 + i32.add + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store + i32.const 0 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end local.get $0 - call $~lib/array/Array#shift - local.set $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $11 ) - (func $export:~lib/array/Array#some (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 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer 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 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 8608 + i32.const 8736 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.eqz + if + i32.const 8800 + 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 $1 - call $~lib/array/Array#some - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 10 + i32.eq + if + local.get $0 + call $~lib/util/number/decimalCount32 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $6 + local.get $0 + local.set $5 + local.get $3 + local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $6 + local.get $0 + local.set $5 + local.get $3 + local.set $4 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $5 + i64.extend_i32_u + local.get $4 + call $~lib/util/number/utoa_hex_lut + else + local.get $0 + i64.extend_i32_u + local.get $1 + call $~lib/util/number/ulog_base + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i64.extend_i32_u + local.get $3 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end local.get $2 - ) - (func $export:~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#unshift - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $7 ) - (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#slice@varargs + i32.const 1 + i32.sub local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $3 - ) - (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + i32.load + local.set $4 + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end local.get $2 - call $~lib/array/Array#splice@varargs - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 + local.get $5 i32.add - global.set $~lib/memory/__stack_pointer local.get $3 - ) - (func $export:~lib/array/Array#reverse (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 $~lib/array/Array#reverse - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.mul + i32.const 10 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end local.get $0 - local.get $1 - call $~lib/array/Array#sort@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array#join@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#flat (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 $~lib/array/Array#flat - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#toString - local.set $1 + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $11 ) - (func $export:~lib/array/Array<~lib/string/String>#get:dataStart (param $0 i32) (result i32) + (func $~lib/util/number/dtoa (param $0 f64) (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 $~lib/array/Array<~lib/string/String>#get:dataStart - 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:std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store local.get $0 - local.get $1 - call $std/array/ArrayStr#constructor@varargs - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + f64.const 0 + f64.eq + if + i32.const 10736 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end local.get $0 - i32.store local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $0 + local.get $0 + f64.ne + if + i32.const 10768 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const 10800 + i32.const 10848 + local.get $0 + f64.const 0 + f64.lt + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const 10880 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl 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:~lib/array/Array<~lib/string/String>#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - local.get $0 + local.get $2 + i32.const 10880 local.get $1 - call $~lib/array/Array<~lib/string/String>#set:length + memory.copy + local.get $2 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $export:~lib/array/Array<~lib/string/String>#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 i32) + (local $10 i32) + (local $11 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 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + f64.load + call $~lib/util/number/dtoa + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $2 + call $~lib/string/String#get:length + local.set $4 + i32.const 28 + local.get $4 + i32.add + local.get $3 + i32.mul + i32.const 28 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + i32.const 0 + local.set $7 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $7 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $8 + call $~lib/util/number/dtoa_buffered + i32.add + local.set $7 + local.get $4 + if + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $7 + local.get $4 + i32.add + local.set $7 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#every - local.set $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $7 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $8 + call $~lib/util/number/dtoa_buffered + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.gt_s + if + local.get $6 + i32.const 0 + local.get $7 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $6 + local.set $11 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 $11 ) - (func $export:~lib/array/Array<~lib/string/String>#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#findIndex - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 8208 + end + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + i32.const 0 + local.set $5 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $7 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.ne + if + local.get $5 + local.get $6 + call $~lib/string/String#get:length + i32.add + local.set $5 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + local.set $8 local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + call $~lib/string/String#get:length + 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 $5 + local.get $9 + local.get $3 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=8 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $3 + i32.lt_s + local.set $7 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.ne + if + local.get $6 + call $~lib/string/String#get:length + local.set $11 + local.get $10 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $11 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $11 + i32.add + local.set $8 + end + local.get $9 + if + local.get $10 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $9 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $9 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#findLastIndex - local.set $2 + local.get $6 + i32.const 0 + i32.ne + if + local.get $10 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy + end + local.get $10 + local.set $12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $12 ) - (func $export:~lib/array/Array<~lib/string/String>#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#at - local.set $2 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + i32.load8_s + local.set $4 + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 11 + local.get $5 + i32.add + local.get $3 + i32.mul + i32.const 11 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + i32.const 0 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $11 ) - (func $export:~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 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 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + i32.load16_u + local.set $4 + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end local.get $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 + local.get $5 + i32.add local.get $3 - call $~lib/array/Array<~lib/string/String>#fill@varargs - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.mul + i32.const 10 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $export:~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#includes@varargs - local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 ) - (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 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 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 8608 + i32.const 8736 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 8800 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $3 + local.get $3 + call $~lib/util/number/decimalCount32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $1 + i32.const 16 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $3 + local.get $0 + local.set $8 + local.get $4 + local.set $7 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $3 + local.get $8 + local.get $7 + call $~lib/util/number/utoa_hex_lut + else + local.get $0 + local.get $1 + call $~lib/util/number/ulog_base + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $4 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf@varargs - local.set $3 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 ) - (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 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 - local.get $2 - call $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs + i32.const 1 + i32.sub local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + 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 $3 + i32.eqz + if + local.get $0 + i64.load + local.set $4 + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/utoa64 + 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 $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 20 + local.get $5 i32.add - global.set $~lib/memory/__stack_pointer local.get $3 - ) - (func $export:~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.mul + i32.const 20 + i32.add + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + local.set $8 + i32.const 0 + local.set $10 + loop $for-loop|0 + local.get $10 + local.get $3 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $0 + local.get $10 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $10 + i32.const 1 + i32.add + local.set $10 + br $for-loop|0 + end + end local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - local.set $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + 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 $7 + local.set $12 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 $12 ) - (func $export:~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 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 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 8608 + i32.const 8736 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#concat + i64.const 0 + i64.ne + i32.eqz + if + i32.const 8800 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 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:~lib/array/Array<~lib/string/String>#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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 $0 - i32.store - local.get $0 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $4 + local.get $4 + call $~lib/util/number/decimalCount32 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $8 + local.get $4 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $8 + local.get $7 + local.get $6 + call $~lib/util/number/utoa32_dec_lut + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $7 + local.get $0 + local.set $9 + local.get $5 + local.set $6 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $9 + local.get $6 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $1 + i32.const 16 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $4 + local.get $0 + local.set $9 + local.get $5 + local.set $8 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $4 + local.get $9 + local.get $8 + call $~lib/util/number/utoa_hex_lut + else + local.get $0 + local.get $1 + call $~lib/util/number/ulog_base + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $5 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end local.get $3 - call $~lib/array/Array<~lib/string/String>#copyWithin@varargs - local.set $4 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $10 ) - (func $export:~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 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 $~lib/array/Array<~lib/string/String>#pop - 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:~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#forEach - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + 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 $3 + i32.eqz + if + local.get $0 + i64.load + local.set $4 + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.wrap_i64 + i64.extend_i32_s + i32.const 10 + call $~lib/util/number/itoa64 + 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 $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 21 + local.get $5 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array<~lib/string/String>#filter (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 $~lib/array/Array<~lib/string/String>#filter - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + i32.mul + i32.const 21 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#shift (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 $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store + i32.const 0 + local.set $8 + i32.const 0 + local.set $10 + loop $for-loop|0 + local.get $10 + local.get $3 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $0 + local.get $10 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $10 + i32.const 1 + i32.add + local.set $10 + br $for-loop|0 + end + end local.get $0 - call $~lib/array/Array<~lib/string/String>#shift - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:~lib/array/Array<~lib/string/String>#some (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 $~lib/array/Array<~lib/string/String>#some - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#unshift (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 $~lib/array/Array<~lib/string/String>#unshift - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#slice@varargs - local.set $3 + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + 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 $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $12 ) - (func $export:~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#splice@varargs + i32.const 1 + i32.sub local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 8208 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + i32.load8_u + local.set $4 + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $4 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $2 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 + local.get $5 i32.add - global.set $~lib/memory/__stack_pointer local.get $3 - ) - (func $export:~lib/array/Array<~lib/string/String>#reverse (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 + i32.mul + i32.const 10 + i32.add + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store + i32.const 0 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $5 + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $8 + local.get $5 + i32.add + local.set $8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end local.get $0 - call $~lib/array/Array<~lib/string/String>#reverse - local.set $1 + local.get $3 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s + if + local.get $7 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $11 ) - (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + i32.eqz + drop local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.load offset=4 + local.set $1 local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#sort@varargs + i32.load offset=12 local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $2 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $1 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $3 + local.get $6 + i32.const 0 + i32.eq + if (result i32) + i32.const 0 + else + local.get $6 + i32.load offset=12 + end + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $3 + i32.const 2 + i32.shl + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $9 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#join@varargs - local.set $2 + local.get $9 + local.get $3 + i32.store offset=12 + local.get $9 + local.get $7 + i32.store offset=8 + local.get $9 + local.get $8 + i32.store offset=4 + local.get $9 + local.get $8 + i32.store + local.get $9 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $10 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $2 + i32.lt_s + local.set $5 + local.get $5 + if + block $for-continue|1 + local.get $1 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.eqz + if + br $for-continue|1 + end + local.get $6 + i32.load offset=12 + i32.const 2 + i32.shl + local.set $11 + local.get $8 + local.get $10 + i32.add + local.get $6 + i32.load offset=4 + local.get $11 + memory.copy + local.get $10 + local.get $11 + i32.add + local.set $10 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end + i32.const 0 + drop + local.get $9 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $12 ) - (func $export:~lib/array/Array<~lib/string/String>#flat (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 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 1 + i32.eqz + drop local.get $0 - i32.store - local.get $0 - call $~lib/array/Array<~lib/string/String>#flat + i32.load offset=4 local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $2 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $1 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $3 + local.get $6 + i32.const 0 + i32.eq + if (result i32) + i32.const 0 + else + local.get $6 + i32.load offset=12 + end + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $3 + i32.const 2 + i32.shl + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 16 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=4 + local.get $9 + local.get $3 + i32.store offset=12 + local.get $9 + local.get $7 + i32.store offset=8 + local.get $9 + local.get $8 + i32.store offset=4 + local.get $9 + local.get $8 i32.store - local.get $0 - call $~lib/array/Array<~lib/string/String>#toString - local.set $1 + local.get $9 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $10 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $2 + i32.lt_s + local.set $5 + local.get $5 + if + block $for-continue|1 + local.get $1 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.eqz + if + br $for-continue|1 + end + local.get $6 + i32.load offset=12 + i32.const 2 + i32.shl + local.set $11 + local.get $8 + local.get $10 + i32.add + local.get $6 + i32.load offset=4 + local.get $11 + memory.copy + local.get $10 + local.get $11 + i32.add + local.set $10 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end + i32.const 1 + drop + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $3 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $8 + local.get $11 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 + end + end + local.get $9 + local.set $12 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 $12 ) ) diff --git a/tests/compiler/std/array.json b/tests/compiler/std/array.json index f38dcdc11d..bec32a4d51 100644 --- a/tests/compiler/std/array.json +++ b/tests/compiler/std/array.json @@ -1,6 +1,6 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ], "asc_rtrace": true } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.release.wat similarity index 69% rename from tests/compiler/std/array.optimized.wat rename to tests/compiler/std/array.release.wat index 1c02a283e3..a95e6b784c 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.release.wat @@ -1,28 +1,28 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $none_=>_none (func)) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) + (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -48,668 +48,294 @@ (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/array/ArrayU32 i32 (i32.const 44)) - (global $std/array/ArrayU8 i32 (i32.const 45)) - (global $std/array/ArrayStr i32 (i32.const 46)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32036)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31876)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1084) ",") - (data (i32.const 1096) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1132) "<") - (data (i32.const 1144) "\01\00\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 (i32.const 1196) "<") - (data (i32.const 1208) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1324) "<") - (data (i32.const 1336) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1388) ",") - (data (i32.const 1400) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1468) "<") - (data (i32.const 1480) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1532) ",") - (data (i32.const 1544) "\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1580) "<") - (data (i32.const 1592) "\01\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 (i32.const 1644) "\1c") - (data (i32.const 1656) "\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1676) "\1c") - (data (i32.const 1692) "\05\00\00\00\01\02\03\04\05") - (data (i32.const 1708) "\1c") - (data (i32.const 1724) "\05\00\00\00\01\01\01\04\05") - (data (i32.const 1740) "\1c") - (data (i32.const 1756) "\05") - (data (i32.const 1772) "\1c") - (data (i32.const 1788) "\05\00\00\00\01\01") - (data (i32.const 1804) "\1c") - (data (i32.const 1820) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1836) "\1c") - (data (i32.const 1852) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1868) ",") - (data (i32.const 1884) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1916) ",") - (data (i32.const 1932) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1964) ",") - (data (i32.const 1980) "\14") - (data (i32.const 2012) ",") - (data (i32.const 2028) "\14\00\00\00\01\00\00\00\01") - (data (i32.const 2060) ",") - (data (i32.const 2076) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2108) ",") - (data (i32.const 2124) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2156) ",") - (data (i32.const 2168) "\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 2204) ",") - (data (i32.const 2220) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 1036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1132) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1196) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1324) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1468) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1532) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1580) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05") + (data (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01") + (data (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 1868) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 1916) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 1964) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14") + (data (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") + (data (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2108) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 2204) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") (data (i32.const 2252) "\1c") (data (i32.const 2284) "\1c") - (data (i32.const 2316) ",") - (data (i32.const 2332) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2364) ",") - (data (i32.const 2380) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2412) ",") - (data (i32.const 2428) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2460) ",") - (data (i32.const 2476) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2508) ",") - (data (i32.const 2524) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2556) ",") - (data (i32.const 2572) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2604) ",") - (data (i32.const 2620) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2652) ",") - (data (i32.const 2668) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2700) ",") - (data (i32.const 2716) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2748) ",") - (data (i32.const 2764) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2796) ",") - (data (i32.const 2812) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2844) ",") - (data (i32.const 2860) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2892) ",") - (data (i32.const 2908) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2940) ",") - (data (i32.const 2956) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2988) ",") - (data (i32.const 3004) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3036) ",") - (data (i32.const 3052) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3084) ",") - (data (i32.const 3100) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3132) ",") - (data (i32.const 3148) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3180) ",") - (data (i32.const 3196) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3228) ",") - (data (i32.const 3244) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3276) ",") - (data (i32.const 3292) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3324) ",") - (data (i32.const 3340) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 3372) ",") - (data (i32.const 3388) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3420) ",") - (data (i32.const 3436) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 3468) ",") - (data (i32.const 3484) "\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") - (data (i32.const 3516) "\1c") - (data (i32.const 3532) "\0c\00\00\00\07\00\00\00\t\00\00\00\0b") - (data (i32.const 3548) "\1c") - (data (i32.const 3564) "\08\00\00\00\07\00\00\00\t") - (data (i32.const 3580) ",") - (data (i32.const 3596) "\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") - (data (i32.const 3628) "\1c") - (data (i32.const 3644) "\08\00\00\00\t\00\00\00\0b") - (data (i32.const 3660) "\1c") - (data (i32.const 3676) "\08\00\00\00\07\00\00\00\t") - (data (i32.const 3692) "\1c") - (data (i32.const 3708) "\08\00\00\00\07\00\00\00\t") - (data (i32.const 3724) "\1c") - (data (i32.const 3740) "\04\00\00\00\00\01\02\03") - (data (i32.const 3756) "\1c") - (data (i32.const 3772) "\08\00\00\00\00\01\02\03\04\05\06\07") - (data (i32.const 3788) ",") - (data (i32.const 3804) "\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10") - (data (i32.const 3836) ",") - (data (i32.const 3852) "\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 3884) ",") - (data (i32.const 3900) "\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07") - (data (i32.const 3932) ",") - (data (i32.const 3948) "\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08") - (data (i32.const 3980) "\1c") - (data (i32.const 3996) "\04\00\00\00\00\00\c0\7f") - (data (i32.const 4012) "\1c") - (data (i32.const 4028) "\08") - (data (i32.const 4038) "\f8\7f") - (data (i32.const 4044) ",") - (data (i32.const 4060) "\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") - (data (i32.const 4092) "\1c") - (data (i32.const 4108) "\04\00\00\00\00\00\c0\7f") - (data (i32.const 4124) "\1c") - (data (i32.const 4140) "\08") - (data (i32.const 4150) "\f8\7f") - (data (i32.const 4156) ",") - (data (i32.const 4172) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4204) ",") - (data (i32.const 4220) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2316) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2364) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2508) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2556) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2652) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2700) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2748) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2796) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2892) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2940) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2988) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3036) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3084) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3132) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3180) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3324) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3372) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3420) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\07\00\00\00\t") + (data (i32.const 3580) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") + (data (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\t\00\00\00\0b") + (data (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\07\00\00\00\t") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\07\00\00\00\t") + (data (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\01\02\03") + (data (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07") + (data (i32.const 3788) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10") + (data (i32.const 3836) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 3884) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07") + (data (i32.const 3932) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 4012) "\1c\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\f8\7f") + (data (i32.const 4044) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 4124) "\1c\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\f8\7f") + (data (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4252) "\1c") - (data (i32.const 4284) ",") - (data (i32.const 4300) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4284) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4332) "\1c") - (data (i32.const 4364) ",") - (data (i32.const 4380) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4412) ",") - (data (i32.const 4428) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4460) "\1c") - (data (i32.const 4476) "\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4492) "\1c") - (data (i32.const 4508) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 4524) ",") - (data (i32.const 4540) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4572) "\1c") - (data (i32.const 4588) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 4604) "\1c") - (data (i32.const 4620) "\0c\00\00\00\01\00\00\00\02\00\00\00\05") - (data (i32.const 4636) ",") - (data (i32.const 4652) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4684) "\1c") - (data (i32.const 4700) "\04\00\00\00\01") - (data (i32.const 4716) ",") - (data (i32.const 4732) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4764) ",") - (data (i32.const 4780) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4812) "\1c") - (data (i32.const 4828) "\04\00\00\00\05") - (data (i32.const 4844) ",") - (data (i32.const 4860) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data (i32.const 4892) ",") - (data (i32.const 4908) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4940) "\1c") - (data (i32.const 4956) "\08\00\00\00\04\00\00\00\05") - (data (i32.const 4972) "\1c") - (data (i32.const 4988) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 5004) ",") - (data (i32.const 5020) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5052) "\1c") - (data (i32.const 5068) "\04\00\00\00\04") - (data (i32.const 5084) ",") - (data (i32.const 5100) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data (i32.const 5132) ",") - (data (i32.const 5148) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5180) "\1c") - (data (i32.const 5196) "\04\00\00\00\01") - (data (i32.const 5212) ",") - (data (i32.const 5228) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5260) ",") - (data (i32.const 5276) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4364) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4412) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4460) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 4524) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") + (data (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data (i32.const 4636) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 4716) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4764) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05") + (data (i32.const 4844) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 4892) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05") + (data (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 5004) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04") + (data (i32.const 5084) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data (i32.const 5132) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5260) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5308) "\1c") - (data (i32.const 5340) ",") - (data (i32.const 5356) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5388) ",") - (data (i32.const 5404) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5340) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5388) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5436) "\1c") - (data (i32.const 5468) ",") - (data (i32.const 5484) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5516) ",") - (data (i32.const 5532) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5468) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5516) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5564) "\1c") - (data (i32.const 5596) ",") - (data (i32.const 5612) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5644) ",") - (data (i32.const 5660) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5596) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5644) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5692) "\1c") - (data (i32.const 5724) ",") - (data (i32.const 5740) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5772) ",") - (data (i32.const 5788) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5724) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5772) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5820) "\1c") - (data (i32.const 5852) ",") - (data (i32.const 5868) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5852) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 5900) "\1c") - (data (i32.const 5932) "|") - (data (i32.const 5944) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 6060) "<") - (data (i32.const 6072) "\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 6124) "\1c") - (data (i32.const 6136) "\0d\00\00\00\08\00\00\00\01") - (data (i32.const 6156) "\1c") - (data (i32.const 6168) "\0d\00\00\00\08\00\00\00\02") - (data (i32.const 6188) "\1c") - (data (i32.const 6200) "\0d\00\00\00\08\00\00\00\03") - (data (i32.const 6220) "\1c") - (data (i32.const 6232) "\0d\00\00\00\08\00\00\00\04") - (data (i32.const 6252) "\1c") - (data (i32.const 6264) "\0d\00\00\00\08\00\00\00\05") - (data (i32.const 6284) "\1c") - (data (i32.const 6296) "\0d\00\00\00\08\00\00\00\06") - (data (i32.const 6316) ",") - (data (i32.const 6332) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 6364) "\1c") - (data (i32.const 6376) "\0d\00\00\00\08\00\00\00\07") - (data (i32.const 6396) "\1c") - (data (i32.const 6408) "\0d\00\00\00\08\00\00\00\08") - (data (i32.const 6428) "\1c") - (data (i32.const 6440) "\0d\00\00\00\08\00\00\00\t") - (data (i32.const 6460) "\1c") - (data (i32.const 6472) "\0d\00\00\00\08\00\00\00\n") - (data (i32.const 6492) "\1c") - (data (i32.const 6504) "\0d\00\00\00\08\00\00\00\0b") - (data (i32.const 6524) "\1c") - (data (i32.const 6536) "\0d\00\00\00\08\00\00\00\0c") - (data (i32.const 6556) "\1c") - (data (i32.const 6568) "\0d\00\00\00\08\00\00\00\0d") - (data (i32.const 6588) "\1c") - (data (i32.const 6600) "\0d\00\00\00\08\00\00\00\0e") - (data (i32.const 6620) "\1c") - (data (i32.const 6632) "\0d\00\00\00\08\00\00\00\0f") - (data (i32.const 6652) "\1c") - (data (i32.const 6664) "\0d\00\00\00\08\00\00\00\10") - (data (i32.const 6684) "\1c") - (data (i32.const 6696) "\0d\00\00\00\08\00\00\00\11") - (data (i32.const 6716) "\1c") - (data (i32.const 6728) "\0d\00\00\00\08\00\00\00\12") - (data (i32.const 6748) "\1c") - (data (i32.const 6760) "\0d\00\00\00\08\00\00\00\13") - (data (i32.const 6780) "\1c") - (data (i32.const 6792) "\0d\00\00\00\08\00\00\00\14") - (data (i32.const 6812) "\1c") - (data (i32.const 6824) "\0e\00\00\00\08\00\00\00\15") - (data (i32.const 6844) "\1c") - (data (i32.const 6856) "\0e\00\00\00\08\00\00\00\16") - (data (i32.const 6876) "\1c") - (data (i32.const 6888) "\0e\00\00\00\08\00\00\00\17") - (data (i32.const 6908) "\1c") - (data (i32.const 6920) "\0e\00\00\00\08\00\00\00\18") - (data (i32.const 6940) "\1c") - (data (i32.const 6952) "\0e\00\00\00\08\00\00\00\19") - (data (i32.const 6972) "\1c") - (data (i32.const 6984) "\0f\00\00\00\08\00\00\00\1a") - (data (i32.const 7004) "\1c") - (data (i32.const 7016) "\10\00\00\00\08\00\00\00\1b") - (data (i32.const 7036) "\1c") - (data (i32.const 7048) "\10\00\00\00\08\00\00\00\1c") - (data (i32.const 7068) "\1c") - (data (i32.const 7080) "\10\00\00\00\08\00\00\00\1d") - (data (i32.const 7100) "\1c") - (data (i32.const 7112) "\0d\00\00\00\08\00\00\00\1e") - (data (i32.const 7132) "\1c") - (data (i32.const 7144) "\0d\00\00\00\08\00\00\00\1f") - (data (i32.const 7164) "\1c") - (data (i32.const 7176) "\0d\00\00\00\08\00\00\00 ") - (data (i32.const 7196) "\1c") - (data (i32.const 7208) "\0d\00\00\00\08\00\00\00!") - (data (i32.const 7228) "\1c") - (data (i32.const 7240) "\11\00\00\00\08\00\00\00\"") - (data (i32.const 7260) "\1c") - (data (i32.const 7272) "\11\00\00\00\08\00\00\00#") - (data (i32.const 7292) "\1c") - (data (i32.const 7304) "\12\00\00\00\08\00\00\00$") - (data (i32.const 7324) "\1c") - (data (i32.const 7336) "\12\00\00\00\08\00\00\00%") - (data (i32.const 7356) "\1c") - (data (i32.const 7368) "\11\00\00\00\08\00\00\00&") - (data (i32.const 7388) "\1c") - (data (i32.const 7400) "\11\00\00\00\08\00\00\00\'") - (data (i32.const 7420) "\1c") - (data (i32.const 7432) "\11\00\00\00\08\00\00\00(") - (data (i32.const 7452) "\1c") - (data (i32.const 7464) "\11\00\00\00\08\00\00\00)") - (data (i32.const 7484) "\1c") - (data (i32.const 7496) "\11\00\00\00\08\00\00\00*") - (data (i32.const 7516) "\1c") - (data (i32.const 7528) "\12\00\00\00\08\00\00\00+") - (data (i32.const 7548) "\1c") - (data (i32.const 7560) "\12\00\00\00\08\00\00\00,") - (data (i32.const 7580) "\1c") - (data (i32.const 7592) "\11\00\00\00\08\00\00\00-") - (data (i32.const 7612) "\1c") - (data (i32.const 7624) "\11\00\00\00\08\00\00\00.") - (data (i32.const 7644) "\1c") - (data (i32.const 7656) "\11\00\00\00\08\00\00\00/") - (data (i32.const 7676) "\bc") - (data (i32.const 7688) "\01\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 (i32.const 7868) "\1c") - (data (i32.const 7884) "\0c\00\00\00\00\00\00@\00\00\80\bf") - (data (i32.const 7900) "\1c") - (data (i32.const 7912) "\15\00\00\00\08\00\00\000") - (data (i32.const 7932) "\1c") - (data (i32.const 7948) "\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") - (data (i32.const 7964) "<") - (data (i32.const 7980) " \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 (i32.const 8028) "<") - (data (i32.const 8044) " \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 (i32.const 8092) "\\") - (data (i32.const 8108) "@") - (data (i32.const 8118) "\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 (i32.const 8158) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 8188) "\1c") - (data (i32.const 8200) "\16\00\00\00\08\00\00\001") - (data (i32.const 8220) "\\") - (data (i32.const 8236) "@") - (data (i32.const 8246) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 8278) "\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 (i32.const 8316) ",") - (data (i32.const 8332) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 8364) "\1c") - (data (i32.const 8376) "\17\00\00\00\08\00\00\002") - (data (i32.const 8396) ",") - (data (i32.const 8412) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 8444) ",") - (data (i32.const 8460) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 8492) "\1c") - (data (i32.const 8504) "\18\00\00\00\08\00\00\003") - (data (i32.const 8524) ",") - (data (i32.const 8540) "\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 (i32.const 5932) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 6060) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\01") + (data (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\02") + (data (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\03") + (data (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\04") + (data (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\05") + (data (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\06") + (data (i32.const 6316) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 6364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\07") + (data (i32.const 6396) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\08") + (data (i32.const 6428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\t") + (data (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\n") + (data (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\0b") + (data (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\0c") + (data (i32.const 6556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\0d") + (data (i32.const 6588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\0e") + (data (i32.const 6620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\0f") + (data (i32.const 6652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\10") + (data (i32.const 6684) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11") + (data (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12") + (data (i32.const 6748) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13") + (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14") + (data (i32.const 6812) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\15") + (data (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16") + (data (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\17") + (data (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\18") + (data (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\19") + (data (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\1a") + (data (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1b") + (data (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1c") + (data (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1d") + (data (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\1e") + (data (i32.const 7132) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\1f") + (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00 ") + (data (i32.const 7196) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00!") + (data (i32.const 7228) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\"") + (data (i32.const 7260) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00#") + (data (i32.const 7292) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00$") + (data (i32.const 7324) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00%") + (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00&") + (data (i32.const 7388) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'") + (data (i32.const 7420) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(") + (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00)") + (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00*") + (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00+") + (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,") + (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00-") + (data (i32.const 7612) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00.") + (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00/") + (data (i32.const 7676) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 7868) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf") + (data (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\000") + (data (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data (i32.const 7964) "<\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8028) "<\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8092) "\\\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\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") + (data (i32.const 8188) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\001") + (data (i32.const 8220) "\\\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\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") + (data (i32.const 8316) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8364) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\002") + (data (i32.const 8396) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8444) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8492) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\003") + (data (i32.const 8524) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 8572) "\1c") - (data (i32.const 8604) "\1c") - (data (i32.const 8620) "\04\00\00\00\01") - (data (i32.const 8636) "\1c") - (data (i32.const 8652) "\08\00\00\00\02\00\00\00\01") - (data (i32.const 8668) ",") - (data (i32.const 8684) "\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 8716) ",") - (data (i32.const 8732) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 8764) "\1c") - (data (i32.const 8776) "\17\00\00\00\08\00\00\004") - (data (i32.const 8796) "\1c") - (data (i32.const 8812) "\04\00\00\00\01") - (data (i32.const 8828) "\1c") - (data (i32.const 8844) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 8860) "\1c") - (data (i32.const 8872) "\19\00\00\00\08\00\00\005") - (data (i32.const 8892) "\1c") - (data (i32.const 8904) "\17\00\00\00\08\00\00\006") - (data (i32.const 8924) "\1c") - (data (i32.const 8936) "\17\00\00\00\08\00\00\007") - (data (i32.const 8956) "\1c") - (data (i32.const 8968) "\17\00\00\00\08\00\00\008") - (data (i32.const 8988) "\1c") - (data (i32.const 9000) "\17\00\00\00\08\00\00\009") - (data (i32.const 9020) "\1c") - (data (i32.const 9032) "\1b\00\00\00\08\00\00\00:") - (data (i32.const 9052) "\1c") - (data (i32.const 9064) "\1e\00\00\00\08\00\00\00;") - (data (i32.const 9084) "\1c") - (data (i32.const 9096) "\01\00\00\00\02\00\00\00a") - (data (i32.const 9116) "\1c") - (data (i32.const 9128) "\01\00\00\00\02\00\00\00b") - (data (i32.const 9148) "\1c") - (data (i32.const 9160) "\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 9180) "\1c") - (data (i32.const 9192) "\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 9212) "\1c") - (data (i32.const 9224) "\01") - (data (i32.const 9244) ",") - (data (i32.const 9260) "\1c\00\00\00\90#\00\00\b0#\00\00\90#\00\00\d0#\00\00\f0#\00\00\10$") - (data (i32.const 9292) ",") - (data (i32.const 9308) "\1c\00\00\00\10$\00\00\90#\00\00\90#\00\00\d0#\00\00\b0#\00\00\f0#") - (data (i32.const 9340) "\1c") - (data (i32.const 9352) " \00\00\00\08\00\00\00<") - (data (i32.const 9372) "\1c") - (data (i32.const 9384) "\"\00\00\00\08\00\00\00=") - (data (i32.const 9404) "\1c") - (data (i32.const 9420) "\02\00\00\00\01") - (data (i32.const 9436) "\1c") - (data (i32.const 9448) "\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 9468) "\1c") - (data (i32.const 9480) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 9500) "\1c") - (data (i32.const 9512) "\01\00\00\00\02\00\00\00,") - (data (i32.const 9532) ",") - (data (i32.const 9544) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 9580) "\1c") - (data (i32.const 9596) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 9612) "|") - (data (i32.const 9624) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 9740) "<") - (data (i32.const 9752) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 9804) "\1c") - (data (i32.const 9816) "\01\00\00\00\02\00\00\000") + (data (i32.const 8604) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 8636) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01") + (data (i32.const 8668) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 8716) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 8764) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\004") + (data (i32.const 8796) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 8828) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 8860) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\005") + (data (i32.const 8892) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\006") + (data (i32.const 8924) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\007") + (data (i32.const 8956) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\008") + (data (i32.const 8988) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\009") + (data (i32.const 9020) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00:") + (data (i32.const 9052) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00;") + (data (i32.const 9084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 9116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 9148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 9180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 9212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 9244) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\90#\00\00\b0#\00\00\90#\00\00\d0#\00\00\f0#\00\00\10$") + (data (i32.const 9292) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\10$\00\00\90#\00\00\90#\00\00\d0#\00\00\b0#\00\00\f0#") + (data (i32.const 9340) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00<") + (data (i32.const 9372) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00=") + (data (i32.const 9404) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01") + (data (i32.const 9436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 9468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 9500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 9532) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 9580) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 9612) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 9740) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 9804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 9836) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 10236) "\1c\04") - (data (i32.const 10248) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 11292) "\\") - (data (i32.const 11304) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 11388) "\1c") - (data (i32.const 11400) "\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 11420) "\1c") - (data (i32.const 11436) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 11452) "\1c") - (data (i32.const 11464) "\01\00\00\00\02\00\00\00-") - (data (i32.const 11484) "\1c") - (data (i32.const 11500) "\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 11516) "\1c") - (data (i32.const 11528) "\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 11548) "L") - (data (i32.const 11560) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 11628) "L") - (data (i32.const 11644) "0") - (data (i32.const 11662) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 11708) "\1c") - (data (i32.const 11720) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 11740) "\1c") - (data (i32.const 11752) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 11772) "\1c") - (data (i32.const 11784) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 11804) ",") - (data (i32.const 11816) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 11852) ",") - (data (i32.const 11864) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 10236) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 11292) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 11388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 11420) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 11452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 11484) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 11548) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 11628) "L\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\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") + (data (i32.const 11708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 11740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 11772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 11804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 11852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 11960) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 12876) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\000\00.\000\00,\00 \001\00.\000\00,\00 \00-\002\00.\000\00,\00 \00N\00a\00N\00,\00 \00-\00I\00n\00f\00i\00n\00i\00t\00y\00,\00 \00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\10$\00\00\d02") + (data (i32.const 13052) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 13116) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 13212) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") (data (i32.const 13308) "\1c") - (data (i32.const 13340) "\1c") - (data (i32.const 13356) "\04\00\00\00\01") - (data (i32.const 13372) "\1c") - (data (i32.const 13388) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 13404) ",") - (data (i32.const 13420) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 13452) "\1c") - (data (i32.const 13464) "\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 13484) ",") - (data (i32.const 13496) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 13532) "\1c") - (data (i32.const 13548) "\03\00\00\00\01\ff") - (data (i32.const 13564) "\1c") - (data (i32.const 13576) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data (i32.const 13596) "\1c") - (data (i32.const 13612) "\06\00\00\00\01\00\ff\ff") - (data (i32.const 13628) ",") - (data (i32.const 13640) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 13676) ",") - (data (i32.const 13692) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 13724) "L") - (data (i32.const 13736) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 13804) "<") - (data (i32.const 13820) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 13868) "l") - (data (i32.const 13880) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 13980) ",") - (data (i32.const 13996) "\1c\00\00\00\10$\00\00\90#\00\00\90#\00\00\d0#\00\00\b0#\00\00\f0#") - (data (i32.const 14028) ",") - (data (i32.const 14040) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 14076) "\1c") - (data (i32.const 14088) "\01\00\00\00\02\00\00\002") - (data (i32.const 14108) "\1c") - (data (i32.const 14120) "\01\00\00\00\02\00\00\004") - (data (i32.const 14140) ",") - (data (i32.const 14156) "\10\00\00\00\d02\00\00\107\00\00\00\00\00\0007") - (data (i32.const 14188) "\1c") - (data (i32.const 14200) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 14220) "\1c") - (data (i32.const 14236) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 14252) "\1c") - (data (i32.const 14268) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 14284) ",") - (data (i32.const 14296) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 14332) "\1c") - (data (i32.const 14348) "\02\00\00\00\01\02") - (data (i32.const 14364) "\1c") - (data (i32.const 14380) "\02\00\00\00\03\04") - (data (i32.const 14396) "\1c") - (data (i32.const 14412) "\04\00\00\00\01") - (data (i32.const 14428) "\1c") - (data (i32.const 14444) "\04") - (data (i32.const 14460) "\1c") - (data (i32.const 14476) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 14492) "\1c") - (data (i32.const 14508) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 14524) "\1c") - (data (i32.const 14540) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 14556) "\1c") - (data (i32.const 14568) "\01\00\00\00\06\00\00\00o\00n\00e") - (data (i32.const 14588) "\1c") - (data (i32.const 14604) "\04\00\00\00\f08") - (data (i32.const 14620) "\1c") - (data (i32.const 14632) "\01\00\00\00\06\00\00\00t\00w\00o") - (data (i32.const 14652) "\1c") - (data (i32.const 14664) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data (i32.const 14684) "\1c") - (data (i32.const 14700) "\0c\00\00\0009\00\00\00\00\00\00P9") - (data (i32.const 14716) "\1c") - (data (i32.const 14728) "\01\00\00\00\08\00\00\00f\00o\00u\00r") - (data (i32.const 14748) "\1c") - (data (i32.const 14760) "\01\00\00\00\08\00\00\00f\00i\00v\00e") - (data (i32.const 14780) "\1c") - (data (i32.const 14792) "\01\00\00\00\06\00\00\00s\00i\00x") - (data (i32.const 14812) "\1c") - (data (i32.const 14828) "\0c\00\00\00\909\00\00\b09\00\00\d09") - (data (i32.const 14844) "\1c") - (data (i32.const 14856) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data (i32.const 14876) "\1c") - (data (i32.const 14892) "\04\00\00\00\10:") - (data (i32.const 14908) "<") - (data (i32.const 14924) " \00\00\00\f08\00\0009\00\00\00\00\00\00P9\00\00\909\00\00\b09\00\00\d09\00\00\10:") + (data (i32.const 13340) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 13404) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 13452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 13484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data (i32.const 13532) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff") + (data (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 13596) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff") + (data (i32.const 13628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 13676) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13724) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 13804) "<\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@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 13868) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 13980) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\10$\00\00\90#\00\00\90#\00\00\d0#\00\00\b0#\00\00\f0#") + (data (i32.const 14028) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 14076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 14108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004") + (data (i32.const 14140) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\d02\00\00\107\00\00\00\00\00\0007") + (data (i32.const 14188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 14220) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") + (data (i32.const 14284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02") + (data (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04") + (data (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04") + (data (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\f08") + (data (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\0009\00\00\00\00\00\00P9") + (data (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\909\00\00\b09\00\00\d09") + (data (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10:") + (data (i32.const 14908) "<\00\00\00\00\00\00\00\00\00\00\00\00\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:") (data (i32.const 14972) "\1c") (data (i32.const 15004) "\1c") - (data (i32.const 15036) "\1c") - (data (i32.const 15052) "\04\00\00\00\01") - (data (i32.const 15068) "\1c") - (data (i32.const 15084) "\04\00\00\00\02") - (data (i32.const 15100) "\1c") - (data (i32.const 15112) "+\00\00\00\08\00\00\00>") - (data (i32.const 15132) "<") - (data (i32.const 15144) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") - (data (i32.const 15196) "\1c") - (data (i32.const 15208) "/\00\00\00\08\00\00\00?") - (data (i32.const 15228) "\1c") - (data (i32.const 15240) "\"\00\00\00\08\00\00\00@") - (data (i32.const 15264) "0\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 15292) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") - (data (i32.const 15420) " \00\00\00\00\00\00\00\02A") - (data (i32.const 15476) "\02A") - (data (i32.const 15492) " \00\00\00\00\00\00\00\02A") - (data (i32.const 15516) "\02a") - (data (i32.const 15532) "\02A") - (data (i32.const 15548) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A") - (data (i32.const 15620) "\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00!") - (table $0 65 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|33 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|33 $start:std/array~anonymous|39 $start:std/array~anonymous|33 $start:std/array~anonymous|33 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|33 $start:std/array~anonymous|39 $~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|48 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|48 $start:std/array~anonymous|51 $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|53 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) - (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayStr" (global $std/array/ArrayStr)) + (data (i32.const 15036) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 15068) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02") + (data (i32.const 15100) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00>") + (data (i32.const 15136) ",\00\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\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\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\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\02A\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\02a\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\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A") + (table $0 63 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|33 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|33 $start:std/array~anonymous|39 $start:std/array~anonymous|33 $start:std/array~anonymous|33 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|33 $start:std/array~anonymous|39 $~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|48 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|48 $start:std/array~anonymous|51 $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|53) (export "memory" (memory $0)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) (export "_start" (func $~start)) - (export "ArrayU32#get:dataStart" (func $export:~lib/array/Array#get:dataStart)) - (export "ArrayU32#constructor" (func $export:std/array/ArrayU32#constructor@varargs)) - (export "ArrayU32#get:length" (func $export:~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $export:~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $export:~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $export:~lib/array/Array#findIndex)) - (export "ArrayU32#findLastIndex" (func $export:~lib/array/Array#findLastIndex)) - (export "ArrayU32#at" (func $export:~lib/array/Array#at)) - (export "ArrayU32#fill" (func $export:~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $export:~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $export:~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $export:~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $export:~lib/array/Array#push)) - (export "ArrayU32#concat" (func $export:~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $export:~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $export:~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $export:~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $export:~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $export:~lib/array/Array#shift)) - (export "ArrayU32#some" (func $export:~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $export:~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $export:~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $export:~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $export:~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $export:~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $export:~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $export:~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $export:~lib/array/Array#toString)) - (export "ArrayU8#get:dataStart" (func $export:~lib/array/Array#get:dataStart)) - (export "ArrayU8#constructor" (func $export:std/array/ArrayU8#constructor@varargs)) - (export "ArrayU8#get:length" (func $export:~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $export:~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $export:~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $export:~lib/array/Array#findIndex)) - (export "ArrayU8#findLastIndex" (func $export:~lib/array/Array#findLastIndex)) - (export "ArrayU8#at" (func $export:~lib/array/Array#at)) - (export "ArrayU8#fill" (func $export:~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $export:~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $export:~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $export:~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $export:~lib/array/Array#push)) - (export "ArrayU8#concat" (func $export:~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $export:~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $export:~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $export:~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $export:~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $export:~lib/array/Array#shift)) - (export "ArrayU8#some" (func $export:~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $export:~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $export:~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $export:~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $export:~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $export:~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $export:~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $export:~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $export:~lib/array/Array#toString)) - (export "ArrayStr#get:dataStart" (func $export:~lib/array/Array#get:dataStart)) - (export "ArrayStr#constructor" (func $export:std/array/ArrayStr#constructor@varargs)) - (export "ArrayStr#get:length" (func $export:~lib/array/Array#get:length)) - (export "ArrayStr#set:length" (func $export:~lib/array/Array#set:length)) - (export "ArrayStr#every" (func $export:~lib/array/Array<~lib/string/String>#every)) - (export "ArrayStr#findIndex" (func $export:~lib/array/Array<~lib/string/String>#findIndex)) - (export "ArrayStr#findLastIndex" (func $export:~lib/array/Array<~lib/string/String>#findLastIndex)) - (export "ArrayStr#at" (func $export:~lib/array/Array<~lib/string/String>#at)) - (export "ArrayStr#fill" (func $export:~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $export:~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $export:~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $export:~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $export:~lib/array/Array#copyWithin@varargs)) - (export "ArrayStr#pop" (func $export:~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $export:~lib/array/Array<~lib/string/String>#forEach)) - (export "ArrayStr#filter" (func $export:~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $export:~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $export:~lib/array/Array<~lib/string/String>#some)) - (export "ArrayStr#unshift" (func $export:~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $export:~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $export:~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $export:~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $export:~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $export:~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $export:~lib/array/Array#flat)) - (export "ArrayStr#toString" (func $export:~lib/array/Array<~lib/string/String>#toString)) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -737,8 +363,6 @@ call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 15152 - call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2176 call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5952 @@ -820,7 +444,7 @@ if i32.const 0 local.get $0 - i32.const 32036 + i32.const 31876 i32.lt_u local.get $0 i32.load offset=8 @@ -870,7 +494,7 @@ if (result i32) i32.const 1 else - i32.const 15264 + i32.const 15136 i32.load local.get $1 i32.lt_u @@ -885,7 +509,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 15268 + i32.const 15140 i32.add i32.load i32.const 32 @@ -1450,10 +1074,10 @@ if unreachable end - i32.const 32048 + i32.const 31888 i32.const 0 i32.store - i32.const 33616 + i32.const 33456 i32.const 0 i32.store loop $for-loop|0 @@ -1464,7 +1088,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 32048 + i32.const 31888 i32.add i32.const 0 i32.store offset=4 @@ -1482,7 +1106,7 @@ i32.add i32.const 2 i32.shl - i32.const 32048 + i32.const 31888 i32.add i32.const 0 i32.store offset=96 @@ -1500,20 +1124,20 @@ br $for-loop|0 end end - i32.const 32048 - i32.const 33620 + i32.const 31888 + i32.const 33460 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 32048 + i32.const 31888 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 32036 + i32.const 31876 i32.lt_u if return @@ -1641,7 +1265,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 32036 + i32.const 31876 i32.lt_u if local.get $0 @@ -1741,7 +1365,7 @@ unreachable end local.get $0 - i32.const 32036 + i32.const 31876 i32.lt_u if local.get $0 @@ -2031,7 +1655,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -2045,17 +1669,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -2066,19 +1690,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2099,197 +1723,6 @@ end local.get $1 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $4 - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $4 - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $4 - i32.add - local.tee $5 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $0 - i32.store - local.get $5 - local.get $2 - local.get $4 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - local.get $0 - i32.store - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 12 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 8 - i32.sub - local.get $0 - i32.store - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $5 - local.get $0 - i32.store offset=12 - local.get $5 - local.get $0 - i32.store offset=16 - local.get $5 - local.get $0 - i32.store offset=20 - local.get $5 - local.get $0 - i32.store offset=24 - local.get $1 - i32.const 28 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 24 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 20 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 16 - i32.sub - local.get $0 - i32.store - local.get $5 - local.get $5 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $4 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.sub - local.set $2 - local.get $0 - i64.extend_i32_u - local.tee $3 - i64.const 32 - i64.shl - local.get $3 - i64.or - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i64.store - local.get $1 - local.get $3 - i64.store offset=8 - local.get $1 - local.get $3 - i64.store offset=16 - local.get $1 - local.get $3 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2403,1013 +1836,796 @@ local.tee $1 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + loop $for-loop|0 local.get $2 - select + local.get $3 + i32.lt_s if local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 + local.get $2 + call $~lib/array/Array#__get local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 + local.get $2 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end + i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 3 - i32.and - i32.eqz + i32.load offset=12 + local.get $1 + i32.le_u if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + loop $for-loop|0 local.get $2 - i32.const 8 - i32.and + local.get $3 + i32.lt_s if local.get $0 + local.get $2 + call $~lib/array/Array#__get local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 + local.get $2 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $2 + i32.const 1 i32.add - local.set $0 + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load + local.set $3 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $1 local.get $2 - i32.const 4 - i32.and if - local.get $0 + local.get $4 + i32.const 1 + i32.shl + local.tee $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 local.get $1 - i32.load - i32.store local.get $1 - i32.const 4 - i32.add + local.get $2 + i32.lt_u + select local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $3 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub local.get $1 - i32.load16_u - i32.store16 + i32.ge_u + if + local.get $4 + local.get $1 + i32.store offset=16 + local.get $3 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew + end local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + local.get $1 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $1 + local.get $4 + i32.lt_u + select + memory.copy end local.get $2 - i32.const 1 - i32.and + local.get $3 + i32.ne if local.get $0 - local.get $1 - i32.load8_u - i32.store8 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $2 + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - return + local.get $0 + local.get $1 + i32.store offset=8 end + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 local.get $2 - i32.const 32 - i32.ge_u + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 16 - i32.and + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 0 + i32.le_s + if + i32.const 2176 + i32.const 1104 + i32.const 291 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 if local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + ) + (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + i32.const 0 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.const 0 + i32.ge_s + select + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 147 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 + local.get $4 i32.add local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + i32.const 0 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 + i32.const 0 + i32.gt_s + select + else local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + local.get $4 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 i32.add - local.tee $0 - local.get $1 - i32.const 2 + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.tee $2 + i32.const 2 + i32.shl + local.get $3 + i32.add + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $5 i32.add local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 + i32.const 0 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.const 0 + i32.gt_s + select + else + local.get $5 + local.get $4 + local.get $4 + local.get $5 + i32.gt_s + select end local.get $2 - i32.const 8 - i32.and + i32.sub + local.tee $2 + local.get $4 + local.get $1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + memory.copy + local.get $0 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + i32.eqz if local.get $0 + i32.load offset=12 + local.tee $2 local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + i32.load offset=12 + i32.ne + if + i32.const 0 + return + end local.get $0 - i32.const 2 - i32.add - local.tee $0 local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.eq + if + i32.const 1 + return + end end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 + loop $for-loop|0 + local.get $2 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.gt_s + if + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end + i32.const 1 + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 local.get $2 + i32.const 1 + i32.sub i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end + i32.shl + memory.copy + local.get $3 + local.get $1 + i32.store + local.get $0 local.get $2 + i32.store offset=12 + ) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $1 i32.const 1 - i32.and + i32.gt_u if - local.get $0 local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 + i32.const 1 + i32.shr_u local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl + i32.const 8 i32.sub - i32.le_u - if - local.get $0 - local.get $1 + local.set $5 + loop $while-continue|0 local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 7 + i32.add + i32.gt_u + if + local.get $0 + local.get $2 + i32.add + local.tee $6 + i64.load + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.set $3 + local.get $6 + local.get $0 + local.get $5 + i32.add + local.get $2 + i32.sub + local.tee $6 + i64.load + local.tee $7 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $7 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $7 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $7 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $6 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $while-continue|0 + end end - local.get $0 local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $2 + local.get $4 + i32.lt_u if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $0 + local.get $2 + i32.add + local.tee $5 + i32.load8_u + local.set $6 + local.get $5 + local.get $1 + local.get $2 + i32.sub + local.get $0 + i32.add + local.tee $5 + i32.load8_u + i32.store8 + local.get $5 + local.get $6 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 end end end ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=4 - local.set $5 + local.set $2 local.get $0 i32.load offset=12 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 + local.tee $4 + i32.const 1 + i32.gt_u + if local.get $4 - local.get $3 + i32.const 1 + i32.shr_u + local.set $3 local.get $4 - i32.lt_s - select - end - local.tee $3 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - local.get $1 - local.get $3 - local.get $2 + i32.const 2 i32.sub - call $~lib/memory/memory.fill - end - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get + local.set $5 + loop $while-continue|0 + local.get $3 local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + i32.gt_u + if + local.get $5 + local.get $1 + i32.sub + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $1 + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $7 + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 + local.get $4 + local.get $1 + i32.sub + i32.const 1 + i32.shl + local.get $2 + i32.add + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end end end - i32.const 1 + local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=12 local.get $1 @@ -3425,719 +2641,262 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 - local.tee $3 local.get $1 - i32.load offset=12 - i32.ne + i32.le_u if + local.get $1 i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - loop $for-loop|0 - local.get $2 - local.get $3 i32.lt_s if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1073741820 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1056 + i32.const 1344 i32.const 1104 - i32.const 19 - i32.const 48 + i32.const 130 + i32.const 22 call $~lib/builtins/abort unreachable end local.get $0 - i32.load - local.set $4 - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $2 - local.get $3 - if - local.get $5 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1073741820 - local.get $1 - i32.const 1073741820 - i32.lt_u - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.gt_u - select - local.set $2 - end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $2 - i32.ge_u - if - local.get $3 - local.get $2 - i32.store offset=16 - local.get $4 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $4 - local.get $2 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_u - select - call $~lib/memory/memory.copy - end local.get $1 - local.get $4 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 - if - local.get $0 - local.get $1 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - end + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity local.get $0 - local.get $2 - i32.store offset=8 + local.get $3 + i32.store offset=12 end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity local.get $0 i32.load offset=4 - local.get $3 + local.get $1 i32.const 2 i32.shl i32.add - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 local.get $2 + i32.store ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.eqz ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.store offset=12 + i32.eq ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.store + i32.const 100 + call $~lib/array/Array#push + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - if - local.get $0 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 100 + i32.eq ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 0 + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 i32.const 0 i32.ge_s - select - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 0 + i32.le_s ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 + i32.const 10 i32.lt_s - select - local.set $5 + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.tee $3 - local.get $1 - i32.const 0 + i32.const 10 i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add + ) + (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.const 0 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 3 i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $5 + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 i32.lt_s - if (result i32) - local.get $4 - local.get $5 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $5 - local.get $4 - local.get $4 - local.get $5 - i32.gt_s - select - end + ) + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 + i32.const 100 + call $~lib/array/Array#push + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 3 i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - i32.eqz - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.const 100 + call $~lib/array/Array#push local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 + global.get $std/array/i i32.add - local.get $3 + global.set $std/array/i + ) + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store + call $~lib/array/Array#pop + drop local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 + global.get $std/array/i + i32.add + global.set $std/array/i ) - (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) + (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.const 1 - i32.gt_u + i32.eqz if - local.get $1 - i32.const 1 - i32.shr_u - local.set $4 - local.get $1 - i32.const 8 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $2 - i32.const 7 - i32.add - i32.gt_u + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s if - local.get $0 local.get $2 - i32.add - local.tee $6 - i64.load - local.tee $3 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and + call $~lib/array/Array#pop + drop local.get $3 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.set $3 - local.get $6 - local.get $0 - local.get $5 + i32.const 1 i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s + if local.get $2 - i32.sub - local.tee $6 - i64.load - local.tee $7 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $7 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $7 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $7 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $6 local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and + i32.const 100 + i32.add + call $~lib/array/Array#push local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $2 - i32.const 8 + i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $3 + br $for-loop|1 end end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $2 - local.get $4 - i32.lt_u + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s if - local.get $0 local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 i32.add - local.tee $5 - i32.load8_u - local.set $6 - local.get $5 - local.get $1 + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if local.get $2 - i32.sub - local.get $0 + local.get $3 + i32.const 200 i32.add - local.tee $5 - i32.load8_u - i32.store8 - local.get $5 - local.get $6 - i32.store8 - local.get $2 + call $~lib/array/Array#push + local.get $3 i32.const 1 i32.add - local.set $2 - br $while-continue|1 + local.set $3 + br $for-loop|3 end end end - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $2 + local.get $1 + i32.const 2 + i32.eq local.get $0 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.gt_u + i32.const 202 + i32.ne + i32.and if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.gt_u - if - local.get $5 - local.get $1 - i32.sub - i32.const 1 - i32.shl - local.get $2 - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - local.set $7 - local.get $6 - local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - i32.store - local.get $6 - local.get $7 - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.tee $5 - i32.load16_u - local.set $6 - local.get $5 - local.get $4 - local.get $1 - i32.sub - i32.const 1 - i32.shl - local.get $2 - i32.add - local.tee $5 - i32.load16_u - i32.store16 - local.get $5 - local.get $6 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end - end + i32.const 0 + i32.const 1552 + i32.const 735 + i32.const 7 + call $~lib/builtins/abort + unreachable end + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 + f32.convert_i32_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=12 local.get $1 @@ -4153,345 +2912,65 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 i32.const 2 i32.shl i32.add - local.get $2 - i32.store - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 100 - i32.eq + f32.load ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push - drop - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 0 - i32.ge_s - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + i32.add + global.set $std/array/i local.get $0 - i32.const 0 - i32.le_s ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + i32.add + global.set $std/array/i local.get $0 - i32.const 10 - i32.lt_s ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop local.get $0 - i32.const 3 - i32.lt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + i32.add + global.set $std/array/i local.get $0 - i32.const 3 - i32.ge_s ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 0 - i32.lt_s + i32.const 2 + i32.ge_s ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.gt_s - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - loop $for-loop|0 - local.get $3 - i32.const 4 - i32.lt_s - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 100 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 200 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - end - local.get $1 - i32.const 2 - i32.eq - local.get $0 - i32.const 202 - i32.ne - i32.and - if - i32.const 0 - i32.const 1552 - i32.const 735 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - f32.convert_i32_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4528,7 +3007,6 @@ local.get $3 i32.const 1 call $~lib/array/Array#push - drop local.get $0 local.get $1 i32.add @@ -4973,15 +3451,15 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f32) - (local $11 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) + (local $13 i64) + (local $14 f32) + (local $15 f32) + (local $16 i32) local.get $1 i32.const 48 i32.le_s @@ -5006,17 +3484,17 @@ end local.get $0 f32.load - local.set $11 + local.set $14 local.get $0 f32.load offset=4 - local.set $10 + local.set $15 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $14 + local.get $15 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5027,46 +3505,47 @@ f32.store local.get $0 f32.load offset=8 - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $14 + local.get $15 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $14 + local.get $8 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $14 + local.get $1 select f32.store offset=4 local.get $0 - local.get $10 - local.get $9 + local.get $14 + local.get $8 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $10 + local.set $8 local.get $0 f32.load offset=4 - local.set $9 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $14 + local.get $8 + local.get $8 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5076,8 +3555,8 @@ select f32.store local.get $0 - local.get $10 - local.get $9 + local.get $8 + local.get $14 local.get $1 select f32.store offset=4 @@ -5097,43 +3576,43 @@ local.get $1 i32.clz i32.sub - local.tee $8 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $5 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 + local.get $5 local.get $6 - local.get $8 i32.lt_u if - local.get $6 + local.get $5 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -5149,84 +3628,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $12 + local.get $1 + local.get $9 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $12 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -5236,30 +3715,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 + local.set $7 loop $for-loop|3 - local.get $1 local.get $4 - i32.lt_u + local.get $7 + i32.gt_u if local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load - local.tee $8 + local.tee $16 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $14 + local.get $16 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -5268,16 +3747,16 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $15 + local.get $1 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $8 + local.get $16 local.set $3 end local.get $4 @@ -5287,8 +3766,8 @@ br $for-loop|3 end end - local.get $13 - local.get $1 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -5296,15 +3775,15 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add - local.get $7 + local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 - local.set $7 - local.get $1 + local.set $3 + local.get $5 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -5315,7 +3794,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -5327,13 +3806,13 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -5344,9 +3823,9 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -5875,15 +4354,15 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) + (local $8 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) + (local $13 i64) + (local $14 f64) + (local $15 f64) + (local $16 i32) local.get $1 i32.const 48 i32.le_s @@ -5908,17 +4387,17 @@ end local.get $0 f64.load - local.set $11 + local.set $14 local.get $0 f64.load offset=8 - local.set $10 + local.set $15 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $14 + local.get $15 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5929,46 +4408,47 @@ f64.store local.get $0 f64.load offset=16 - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $14 + local.get $15 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $14 + local.get $8 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $14 + local.get $1 select f64.store offset=8 local.get $0 - local.get $10 - local.get $9 + local.get $14 + local.get $8 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $10 + local.set $8 local.get $0 f64.load offset=8 - local.set $9 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $14 + local.get $8 + local.get $8 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5978,8 +4458,8 @@ select f64.store local.get $0 - local.get $10 - local.get $9 + local.get $8 + local.get $14 local.get $1 select f64.store offset=8 @@ -5999,43 +4479,43 @@ local.get $1 i32.clz i32.sub - local.tee $8 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $5 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 + local.get $5 local.get $6 - local.get $8 i32.lt_u if - local.get $6 + local.get $5 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -6051,84 +4531,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $12 + local.get $1 + local.get $9 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $12 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -6138,30 +4618,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 + local.set $7 loop $for-loop|3 - local.get $1 local.get $4 - i32.lt_u + local.get $7 + i32.gt_u if local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load - local.tee $8 + local.tee $16 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $14 + local.get $16 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -6170,16 +4650,16 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $15 + local.get $1 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $8 + local.get $16 local.set $3 end local.get $4 @@ -6189,8 +4669,8 @@ br $for-loop|3 end end - local.get $13 - local.get $1 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -6198,15 +4678,15 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add - local.get $7 + local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 - local.set $7 - local.get $1 + local.set $3 + local.get $5 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -6217,7 +4697,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -6229,13 +4709,13 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -6246,9 +4726,9 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -6734,8 +5214,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -6760,7 +5240,7 @@ end local.get $0 i32.load - local.set $1 + local.set $5 local.get $0 i32.load offset=4 local.set $3 @@ -6768,49 +5248,50 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store local.get $0 i32.load offset=8 - local.set $5 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $4 local.get $0 i32.load offset=4 local.set $3 @@ -6818,21 +5299,21 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 return @@ -6851,43 +5332,43 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -6903,84 +5384,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 + local.tee $5 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -6990,30 +5471,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -7022,16 +5503,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -7041,8 +5522,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -7050,15 +5531,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -7069,7 +5550,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -7081,13 +5562,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7098,9 +5579,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -7541,8 +6022,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -7567,7 +6048,7 @@ end local.get $0 i32.load - local.set $1 + local.set $5 local.get $0 i32.load offset=4 local.set $3 @@ -7575,49 +6056,50 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store local.get $0 i32.load offset=8 - local.set $5 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $4 local.get $0 i32.load offset=4 local.set $3 @@ -7625,21 +6107,21 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 return @@ -7658,43 +6140,43 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -7710,84 +6192,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 + local.tee $5 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -7797,30 +6279,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -7829,16 +6311,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -7848,8 +6330,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -7857,15 +6339,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -7876,7 +6358,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -7888,13 +6370,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7905,9 +6387,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -8026,11 +6508,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8216,11 +6698,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8375,11 +6857,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8813,7 +7295,6 @@ i32.const 1 i32.add local.tee $3 - i32.const 2 i32.const 1 call $~lib/array/ensureCapacity local.get $0 @@ -9095,11 +7576,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9148,13 +7629,13 @@ local.get $2 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $3 i32.add local.get $1 local.get $4 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9371,11 +7852,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9467,7 +7948,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $5 i32.add @@ -9600,11 +8081,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9696,7 +8177,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $5 i32.add @@ -10178,6 +8659,7 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $2 i32.eqz if @@ -10256,7 +8738,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 @@ -10284,7 +8766,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 3014704 i32.store @@ -10316,68 +8798,69 @@ local.get $1 i32.const 1 i32.eq - if (result i32) + if local.get $0 i32.const 101 i32.store16 offset=2 local.get $0 i32.const 4 i32.add + local.tee $2 local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -10387,13 +8870,12 @@ i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $2 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select - i32.store16 offset=4 - local.get $1 + i32.store16 else local.get $0 i32.const 4 @@ -10407,26 +8889,27 @@ local.tee $2 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 local.get $0 local.get $2 i32.add - local.tee $2 + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $2 + local.get $0 i32.const 4 i32.add + local.tee $4 local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $2 if i32.const 0 local.get $0 @@ -10484,16 +8967,18 @@ i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $4 i32.const 45 i32.const 43 - local.get $3 + local.get $2 select - i32.store16 offset=4 + i32.store16 local.get $0 local.get $1 i32.add + local.set $1 end + local.get $1 i32.const 2 i32.add end @@ -10506,16 +8991,15 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i64) + (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) (local $15 i64) - (local $16 i64) local.get $1 f64.const 0 f64.lt @@ -10536,19 +9020,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $8 + local.tee $7 i32.const 1 - local.get $8 + local.get $7 select i32.const 1075 i32.sub - local.tee $9 + local.tee $8 i32.const 1 i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $8 + local.get $7 i32.const 0 i32.ne i64.extend_i32_u @@ -10563,11 +9047,11 @@ local.tee $4 i64.clz i32.wrap_i64 - local.tee $8 + local.tee $7 i32.sub - local.set $10 + local.set $9 local.get $4 - local.get $8 + local.get $7 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -10577,25 +9061,25 @@ i64.eq i32.const 1 i32.add - local.tee $8 + local.tee $7 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 local.get $8 + local.get $7 i32.sub - local.get $10 + local.get $9 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $10 + local.get $9 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 + local.tee $7 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -10603,10 +9087,10 @@ f64.const 347 f64.add local.tee $1 - i32.trunc_f64_s - local.tee $9 + i32.trunc_sat_f64_s + local.tee $8 local.get $1 - local.get $9 + local.get $8 f64.convert_i32_s f64.ne i32.add @@ -10614,18 +9098,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $9 + local.tee $8 i32.const 3 i32.shl - local.tee $10 + local.tee $9 i32.sub global.set $~lib/util/number/_K - local.get $10 + local.get $9 i32.const 11960 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $9 + local.get $8 i32.const 1 i32.shl i32.const 12656 @@ -10639,38 +9123,37 @@ local.tee $2 i64.const 4294967295 i64.and - local.set $11 + local.set $5 local.get $2 i64.const 32 i64.shr_u - local.tee $5 + local.tee $4 global.get $~lib/util/number/_frc_pow - local.tee $7 + local.tee $10 i64.const 4294967295 i64.and - local.tee $12 - local.tee $2 + local.tee $11 i64.mul - local.get $2 + local.get $5 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $13 + local.set $12 global.get $~lib/util/number/_frc_plus - local.tee $4 + local.tee $2 i64.const 4294967295 i64.and - local.set $2 - local.get $4 + local.set $13 + local.get $2 i64.const 32 i64.shr_u local.tee $6 - local.get $12 + local.get $11 i64.mul - local.get $2 - local.get $12 + local.get $11 + local.get $13 i64.mul i64.const 32 i64.shr_u @@ -10680,41 +9163,34 @@ local.tee $15 i64.const 4294967295 i64.and - local.set $4 + local.set $2 local.get $15 i64.const 32 i64.shr_u local.tee $15 - local.get $12 + local.get $11 i64.mul - local.get $4 - local.get $12 + local.get $2 + local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $5 - local.get $7 + local.set $11 + local.get $6 + local.get $10 i64.const 32 i64.shr_u - local.tee $16 - local.tee $7 + local.tee $10 i64.mul - local.get $13 + local.get $14 i64.const 32 i64.shr_u i64.add - local.get $7 - local.get $11 - i64.mul + local.get $10 local.get $13 + i64.mul + local.get $14 i64.const 4294967295 i64.and i64.add @@ -10723,17 +9199,26 @@ i64.const 32 i64.shr_u i64.add - local.get $6 - local.get $16 + i64.const 1 + i64.sub + local.set $6 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $4 + local.get $10 i64.mul - local.get $14 + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $16 + local.get $5 + local.get $10 i64.mul - local.get $14 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -10742,26 +9227,24 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + local.get $6 global.get $~lib/util/number/_exp_pow - local.get $8 + local.get $7 i32.add i32.const -64 i32.sub - local.get $2 + local.get $6 + local.get $10 local.get $15 - local.get $16 i64.mul - local.get $12 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $4 - local.get $16 + local.get $2 + local.get $10 i64.mul - local.get $12 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -10872,7 +9355,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10905,7 +9388,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10970,7 +9453,7 @@ local.get $0 i32.const 11904 local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -11034,7 +9517,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $5 i32.add @@ -11085,8 +9568,8 @@ local.get $0 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11109,11 +9592,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11646,7 +10129,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11680,7 +10163,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11889,7 +10372,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.add @@ -11940,8 +10423,8 @@ local.get $0 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12120,7 +10603,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12155,7 +10638,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12384,7 +10867,7 @@ local.get $7 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $7 i32.add @@ -12435,8 +10918,8 @@ local.get $0 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12514,29 +10997,138 @@ call $~lib/util/number/utoa32_dec_lut local.get $0 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.set $4 + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1227 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + call $~lib/array/Array#push local.get $0 i32.load offset=12 - local.set $0 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1229 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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-inner1 + block $invalid + block $std/array/Proxy + block $std/array/Dim + block $std/array/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner4 $folding-inner4 $std/array/Ref $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $std/array/Dim $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner3 $std/array/Proxy $folding-inner1 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $invalid + end + return + end + return + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner4 + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12545,359 +11137,167 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 + block $__inlined_func$std/array/isSorted (result i32) i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - local.get $3 - i32.eqz - if - local.get $4 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - local.get $3 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 0 - local.set $0 + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $0 + local.get $2 i32.const 1 - i32.shl + i32.sub + call $~lib/array/Array#__get + local.set $4 + local.get $0 local.get $2 - i32.add + call $~lib/array/Array#__get + local.set $5 + i32.const 2 + global.set $~argumentsLength + i32.const 0 local.get $4 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 local.get $5 - if - local.get $0 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.set $0 - end - local.get $6 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + br_if $__inlined_func$std/array/isSorted + drop + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $0 i32.const 1 - i32.shl - local.get $2 - i32.add - local.get $3 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $2 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.set $0 end - local.get $0 - ) - (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.ne + i32.eqz if i32.const 0 i32.const 1552 - i32.const 1227 - i32.const 5 + i32.const 1046 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1229 - i32.const 5 + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $3 - local.get $0 - i32.load offset=4 - i32.add + i32.store local.get $1 - i32.store8 + i32.const 8784 + i32.store local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 + i32.const 8784 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - local.get $1 - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_u offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $0 - local.get $6 - i32.add - local.get $8 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i32.const 0 + i32.store offset=8 local.get $1 local.get $2 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 return end - local.get $0 + global.get $~lib/memory/__stack_pointer + local.tee $4 local.get $1 - i32.add - i32.load8_u + i32.const 2 + i32.shl local.get $0 + i32.add + i32.load + local.tee $5 + i32.store + local.get $4 local.get $1 i32.const 1 i32.add local.tee $4 + i32.const 2 + i32.shl + local.get $0 i32.add - i32.load8_u + i32.load + local.tee $6 + i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $5 + local.get $6 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -12909,15 +11309,26 @@ local.get $4 i32.gt_s if (result i32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.tee $6 local.get $4 + i32.const 2 + i32.shl + local.get $0 i32.add + local.tee $7 + i32.load offset=4 local.tee $5 - i32.load8_u offset=1 - local.get $5 - i32.load8_u + i32.store + local.get $6 + local.get $7 + i32.load + local.tee $6 + i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $5 + local.get $6 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -12941,26 +11352,32 @@ local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 2 + i32.shl + local.get $0 i32.add local.tee $3 - i32.load8_u - local.set $5 + i32.load + local.tee $5 + i32.store offset=8 local.get $3 - local.get $0 local.get $2 + i32.const 2 + i32.shl + local.get $0 i32.add local.tee $3 - i32.load8_u - i32.store8 + i32.load + i32.store local.get $1 i32.const 1 i32.add local.set $1 local.get $3 local.get $5 - i32.store8 + i32.store local.get $2 i32.const 1 i32.sub @@ -12974,15 +11391,26 @@ local.get $4 i32.gt_s if (result i32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $4 + i32.const 2 + i32.shl + local.get $0 i32.add - local.tee $1 - i32.load8_u offset=1 + local.tee $5 + i32.load offset=4 + local.tee $6 + i32.store local.get $1 - i32.load8_u + local.get $5 + i32.load + local.tee $1 + i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $6 + local.get $1 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -13000,759 +11428,405 @@ end end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $3 - local.get $2 - i32.const 1 + (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15492 i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $7 - local.get $6 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.get $4 - i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + local.set $2 local.get $0 - local.get $6 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array> + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load8_u offset=1 - i32.store8 - local.get $6 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s + i32.eqz if - local.get $4 - local.get $6 - i32.add - i32.load8_u - local.set $8 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.add - local.get $7 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + i32.const 1552 + i32.const 1046 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/array/createRandomStringArray (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 f64) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - if - return - end - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_u offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store8 offset=1 - return - end + 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 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - i32.const 0 - local.get $1 - i32.const 1 + i32.const 8 i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + local.get $8 i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - return - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $7 - i32.const 1 - i32.shl - local.set $8 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $8 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 - local.get $7 - i32.add - local.set $10 - loop $for-loop|1 - local.get $5 - local.get $6 - i32.lt_u - if - local.get $5 - i32.const 2 - i32.shl - local.get $9 - i32.add - i32.const -1 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 - i32.const 1 - i32.add - local.tee $5 - i32.const 32 - i32.lt_s - if - local.get $0 + i32.store + local.get $8 i32.const 0 + i32.store offset=4 local.get $8 - i32.const 31 + i32.const 0 + i32.store offset=8 local.get $8 - i32.const 31 - i32.lt_s - select + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1600 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $1 - local.get $5 - local.get $2 - call $~lib/util/sort/insertionSort - end - loop $while-continue|2 - local.get $1 + i32.store offset=4 local.get $8 - i32.lt_s + local.get $1 + i32.store + local.get $1 if - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $6 local.get $8 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $1 + i32.store offset=4 + local.get $8 + i32.const 1600 + i32.store offset=8 + local.get $8 + i32.const 400 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $8 + i32.store + loop $for-loop|0 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 + i32.const 400 i32.lt_s if + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_sat_f64_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - local.get $6 - local.get $8 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $8 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $8 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $12 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $12 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u - if - local.get $4 - i32.const 2 - i32.shl - local.get $9 - i32.add - i32.load - local.tee $13 - i32.const -1 - i32.ne + i32.const 0 + i32.store offset=8 + i32.const 9232 + local.set $1 + local.get $0 + i32.const 9232 + i32.store + i32.const 0 + local.set $3 + loop $for-loop|03 + local.get $3 + local.get $5 + i32.lt_s if - local.get $0 - local.get $13 - local.get $10 - local.get $4 - i32.const 2 - i32.shl - local.tee $3 - i32.add + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 7696 + i32.store offset=4 + call $~lib/math/NativeMath.random + global.get $~lib/memory/__stack_pointer + i32.const 7696 + i32.store offset=8 + i32.const 7692 i32.load i32.const 1 - i32.add + i32.shr_u + f64.convert_i32_s + f64.mul + f64.floor + i32.trunc_sat_f64_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#charAt + i32.const 7692 + i32.load + i32.const 1 + i32.shr_u + local.get $4 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/string/String#charAt + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 7696 + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $7 local.get $1 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns + local.get $0 + call $~lib/string/String.__concat + local.tee $1 + i32.store local.get $3 - local.get $9 + i32.const 1 i32.add - i32.const -1 - i32.store - local.get $13 local.set $3 + br $for-loop|03 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|3 end - end - local.get $9 - local.get $7 - i32.const 2 - i32.shl - local.tee $4 - i32.add - local.get $3 - i32.store - local.get $4 - local.get $10 - i32.add - local.get $1 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $1 - local.get $7 - local.set $4 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $4 - if - local.get $4 - i32.const 2 - i32.shl - local.get $9 - i32.add - i32.load - local.tee $1 - i32.const -1 - i32.ne - if - local.get $0 - local.get $1 - local.get $4 - i32.const 2 - i32.shl - local.get $10 - i32.add - i32.load - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $8 - local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|4 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 + i32.const 31904 + i32.const 31952 i32.const 1 - i32.add - local.tee $2 - i32.const 2 i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 31904 + i32.const 31952 i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 - local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/array/Array~visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $invalid - block $std/array/ArrayStr - block $std/array/Proxy - block $std/array/Dim - block $std/array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner4 $std/array/Ref $folding-inner2 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $std/array/Dim $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner3 $std/array/Proxy $folding-inner1 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner4 $folding-inner4 $std/array/ArrayStr $folding-inner3 $invalid - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/array - ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 i32.store - block $__inlined_func$std/array/isSorted (result i32) - i32.const 1 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $5 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - br_if $__inlined_func$std/array/isSorted - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.const 9520 + i32.store + local.get $0 + i32.const 9520 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/array/assertSortedDefault (param $0 i32) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13763,296 +11837,143 @@ i32.const 0 i32.store local.get $1 - i32.const 8784 + i32.const 9520 i32.store local.get $0 - i32.const 8784 - call $std/array/assertSorted + i32.load offset=4 + local.get $0 + i32.load offset=12 + i32.const 9520 + call $~lib/util/string/joinStringArray global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store local.get $1 - return - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $5 - i32.store - local.get $4 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $6 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $7 - i32.load offset=4 - local.tee $5 - i32.store - local.get $6 - local.get $7 - i32.load - local.tee $6 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $3 - i32.load - local.tee $5 - i32.store offset=8 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.tee $5 - i32.load offset=4 - local.tee $6 - i32.store - local.get $1 - local.get $5 - i32.load - local.tee $1 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $1 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.const 9520 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $0 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 + local.tee $3 + i32.const 0 i32.lt_s - br_if $folding-inner0 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $3 + i32.eqz + if + local.get $4 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $3 + i32.const 9516 + i32.load i32.const 1 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $5 + i32.shr_u + local.tee $5 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 loop $for-loop|0 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $0 - local.get $2 i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $0 + i32.shl + local.get $1 + i32.add local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.const 1 + i32.shl + local.get $1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array> + i32.const 9520 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 end local.get $2 i32.const 1 @@ -14061,133 +11982,53 @@ br $for-loop|0 end end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $3 + local.get $4 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - i32.const 9520 - call $~lib/array/Array#join - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9520 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - i32.const 9520 - call $~lib/array/Array#join - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/array/Array#toString (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -14195,11 +12036,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14233,11 +12074,10 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 local.tee $2 i32.const 0 i32.store @@ -14246,30 +12086,30 @@ i32.store local.get $0 i32.load offset=4 - local.set $2 + local.set $3 local.get $0 i32.load offset=12 local.set $0 - local.get $3 + local.get $2 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i64.const 0 i64.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $4 i32.const 0 i32.lt_s if @@ -14281,11 +12121,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $3 + local.get $4 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.load local.tee $0 i32.store @@ -14312,37 +12152,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $5 loop $for-loop|0 local.get $1 - local.get $3 + local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 call $~lib/array/Array#toString - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $5 + local.get $6 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $5 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -14359,10 +12199,10 @@ end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.tee $1 @@ -14394,8 +12234,8 @@ local.get $0 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14406,10 +12246,10 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i64) - (local $6 f32) - (local $7 i32) + (local $6 f64) + (local $7 f32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -14423,80 +12263,17 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 - i64.const 0 - i64.store offset=32 - local.get $0 - i64.const 0 - i64.store offset=40 - local.get $0 - i64.const 0 - i64.store offset=48 - local.get $0 - i64.const 0 - i64.store offset=56 - local.get $0 - i64.const 0 - i64.store offset=64 - local.get $0 - i64.const 0 - i64.store offset=72 - local.get $0 - i64.const 0 - i64.store offset=80 - local.get $0 - i64.const 0 - i64.store offset=88 - local.get $0 - i64.const 0 - i64.store offset=96 - local.get $0 - i64.const 0 - i64.store offset=104 - local.get $0 - i64.const 0 - i64.store offset=112 - local.get $0 - i64.const 0 - i64.store offset=120 - local.get $0 - i64.const 0 - i64.store offset=128 - local.get $0 - i64.const 0 - i64.store offset=136 - local.get $0 - i64.const 0 - i64.store offset=144 - local.get $0 - i64.const 0 - i64.store offset=152 - local.get $0 - i64.const 0 - i64.store offset=160 - local.get $0 i32.const 0 - i32.store offset=168 + i32.const 172 + memory.fill memory.size i32.const 16 i32.shl - i32.const 32036 + i32.const 31876 i32.sub i32.const 1 i32.shr_u @@ -14539,7 +12316,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -14558,7 +12335,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -14587,20 +12364,20 @@ i32.const 1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $0 - local.get $3 + local.get $8 i32.store - local.get $3 + local.get $8 if local.get $0 - local.get $3 + local.get $8 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $3 + local.get $8 i32.store offset=4 local.get $0 i32.const 1 @@ -14645,11 +12422,35 @@ local.tee $0 i32.store offset=4 local.get $0 + i32.load offset=4 + local.set $1 i32.const 1 + local.get $0 + i32.load offset=12 + local.tee $8 + local.get $8 i32.const 1 + i32.gt_s + select + local.tee $9 i32.const 3 - call $~lib/array/Array#fill - drop + local.get $8 + local.get $8 + i32.const 3 + i32.gt_s + select + local.tee $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 1 + local.get $8 + local.get $9 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 6 @@ -14672,11 +12473,29 @@ unreachable end local.get $0 + i32.load offset=4 + local.set $1 i32.const 0 + local.get $0 + i32.load offset=12 + local.tee $8 + local.get $8 i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - drop + i32.gt_s + select + local.tee $9 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 0 + local.get $8 + local.get $9 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 6 @@ -14699,11 +12518,38 @@ unreachable end local.get $0 - i32.const 1 + i32.load offset=4 + local.set $1 i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - drop + local.get $0 + i32.load offset=12 + local.tee $8 + local.get $8 + i32.const 0 + i32.gt_s + select + local.tee $9 + local.get $8 + i32.const 3 + i32.sub + local.tee $8 + i32.const 0 + local.get $8 + i32.const 0 + i32.gt_s + select + local.tee $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 1 + local.get $8 + local.get $9 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 6 @@ -14726,11 +12572,32 @@ unreachable end local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $8 i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - drop + i32.sub + local.tee $9 + i32.const 0 + local.get $9 + i32.const 0 + i32.gt_s + select + local.tee $9 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 2 + local.get $8 + local.get $9 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 6 @@ -14753,11 +12620,35 @@ unreachable end local.get $0 - i32.const 0 + i32.load offset=4 + local.set $1 i32.const 1 + local.get $0 + i32.load offset=12 + local.tee $8 + local.get $8 + i32.const 1 + i32.gt_s + select + local.tee $9 i32.const 0 - call $~lib/array/Array#fill - drop + local.get $8 + local.get $8 + i32.const 0 + i32.gt_s + select + local.tee $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 0 + local.get $8 + local.get $9 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 6 @@ -14789,7 +12680,7 @@ i32.store offset=12 local.get $0 i32.load offset=4 - local.set $3 + local.set $8 i32.const 1 local.get $0 i32.load offset=12 @@ -14814,7 +12705,7 @@ local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $8 i32.add i32.const 1 i32.store @@ -14847,35 +12738,34 @@ unreachable end local.get $0 - local.tee $1 i32.load offset=4 - local.set $0 + local.set $8 i32.const 0 - local.get $1 + local.get $0 i32.load offset=12 local.tee $9 local.get $9 i32.const 0 i32.gt_s select - local.set $3 - loop $for-loop|01 - local.get $3 + local.set $1 + loop $for-loop|06 + local.get $1 local.get $9 i32.lt_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $8 i32.add i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|01 + local.set $1 + br $for-loop|06 end end i32.const 5 @@ -14883,12 +12773,12 @@ i32.const 7 i32.const 1984 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -14899,18 +12789,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $8 i32.const 0 - local.get $1 + local.get $0 i32.load offset=12 local.tee $9 local.get $9 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $9 i32.const 3 i32.sub @@ -14921,23 +12811,23 @@ i32.gt_s select local.set $9 - loop $for-loop|03 - local.get $0 + loop $for-loop|08 + local.get $1 local.get $9 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $8 i32.add i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|03 + local.set $1 + br $for-loop|08 end end i32.const 5 @@ -14945,12 +12835,12 @@ i32.const 7 i32.const 2032 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -14961,38 +12851,38 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.set $0 - local.get $1 + local.set $8 + local.get $0 i32.load offset=12 local.tee $9 i32.const 2 i32.sub - local.tee $3 + local.tee $1 i32.const 0 - local.get $3 + local.get $1 i32.const 0 i32.gt_s select - local.set $3 - loop $for-loop|05 - local.get $3 + local.set $1 + loop $for-loop|010 + local.get $1 local.get $9 i32.lt_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $8 i32.add i32.const 2 i32.store - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|05 + local.set $1 + br $for-loop|010 end end i32.const 5 @@ -15000,12 +12890,12 @@ i32.const 7 i32.const 2080 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15016,18 +12906,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $8 i32.const 1 - local.get $1 + local.get $0 i32.load offset=12 local.tee $9 local.get $9 i32.const 1 i32.gt_s select - local.set $0 + local.set $1 i32.const 0 local.get $9 local.get $9 @@ -15035,23 +12925,23 @@ i32.gt_s select local.set $9 - loop $for-loop|07 - local.get $0 + loop $for-loop|012 + local.get $1 local.get $9 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $8 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|07 + local.set $1 + br $for-loop|012 end end i32.const 5 @@ -15059,12 +12949,12 @@ i32.const 7 i32.const 2128 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15112,7 +13002,6 @@ local.get $0 i32.const 42 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -15215,7 +13104,6 @@ local.get $0 i32.const 43 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -15272,7 +13160,6 @@ local.get $0 i32.const 44 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -15346,7 +13233,6 @@ local.get $0 i32.const 45 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -15458,7 +13344,6 @@ i32.store offset=16 local.get $1 i32.const 0 - i32.const 2 i32.const 0 call $~lib/array/ensureCapacity local.get $1 @@ -15551,9 +13436,9 @@ i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store - local.get $3 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15567,9 +13452,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store - local.get $3 + local.get $8 i32.load offset=12 i32.const 3 i32.ne @@ -15598,19 +13483,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store - local.get $3 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15664,27 +13549,25 @@ local.get $0 i32.const 46 call $~lib/array/Array#push - drop local.get $0 i32.const 47 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store local.get $1 - local.get $3 + local.get $8 local.get $0 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store - local.get $3 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15821,11 +13704,11 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $3 + local.tee $8 i32.store offset=8 local.get $1 local.get $0 - local.get $3 + local.get $8 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 @@ -16326,7 +14209,6 @@ local.get $0 i32.const 42 call $~lib/array/Array#unshift - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -16434,7 +14316,6 @@ local.get $0 i32.const 41 call $~lib/array/Array#unshift - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -16571,10 +14452,10 @@ end local.get $0 i32.load offset=4 - local.tee $3 + local.tee $8 i32.load - local.get $3 - local.get $3 + local.get $8 + local.get $8 i32.const 4 i32.add local.get $1 @@ -16584,8 +14465,8 @@ i32.const 2 i32.shl local.tee $10 - call $~lib/memory/memory.copy - local.get $3 + memory.copy + local.get $8 local.get $10 i32.add i32.const 0 @@ -16826,12 +14707,12 @@ i32.const 3 i32.const 3536 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16855,12 +14736,12 @@ i32.const 3 i32.const 3568 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16884,12 +14765,12 @@ i32.const 3 i32.const 3600 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16933,12 +14814,12 @@ i32.const 3 i32.const 3648 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16962,12 +14843,12 @@ i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16991,12 +14872,12 @@ i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=8 local.get $1 - local.get $3 + local.get $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17053,20 +14934,20 @@ local.set $1 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 1 i32.gt_u if i32.const 0 local.set $0 - local.get $3 + local.get $8 i32.const 1 i32.shr_u local.set $9 - local.get $3 + local.get $8 i32.const 1 i32.sub - local.set $3 + local.set $8 loop $while-continue|0 local.get $0 local.get $9 @@ -17081,7 +14962,7 @@ i32.load local.set $11 local.get $10 - local.get $3 + local.get $8 local.get $0 i32.sub i32.const 2 @@ -17192,7 +15073,6 @@ local.get $0 i32.const 43 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -17200,38 +15080,37 @@ local.get $0 i32.const 44 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 0 i32.const 6 i32.const 3744 call $~lib/rt/__newArray - 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 i32.load offset=4 - local.get $3 + local.get $8 i32.load offset=12 call $~lib/util/bytes/REVERSE - local.get $3 + local.get $8 i32.store offset=16 i32.const 0 local.set $1 - local.get $3 + local.get $8 i32.load offset=12 local.set $0 - loop $for-loop|08 + loop $for-loop|013 local.get $0 local.get $1 i32.gt_s if - local.get $3 + local.get $8 local.get $1 call $~lib/array/Array#__get - local.get $3 + local.get $8 i32.load offset=12 local.get $1 i32.sub @@ -17250,7 +15129,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|08 + br $for-loop|013 end end global.get $~lib/memory/__stack_pointer @@ -17274,10 +15153,10 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $3 + local.set $8 loop $for-loop|1 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $1 @@ -17327,15 +15206,15 @@ local.set $0 loop $for-loop|2 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 call $~lib/array/Array#__get local.get $1 i32.load offset=12 - local.get $2 + local.get $3 i32.sub i32.const 1 i32.sub @@ -17348,10 +15227,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|2 end end @@ -17373,10 +15252,10 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|3 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -17422,10 +15301,10 @@ local.set $1 local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|4 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -17468,21 +15347,21 @@ local.tee $0 i32.store offset=28 i32.const 0 - local.set $2 + local.set $3 local.get $0 i32.load offset=12 local.set $1 loop $for-loop|5 local.get $1 - local.get $2 + local.get $3 i32.gt_s if local.get $0 - local.get $2 + local.get $3 call $~lib/array/Array#__get local.get $0 i32.load offset=12 - local.get $2 + local.get $3 i32.sub i32.const 1 i32.sub @@ -17495,44 +15374,44 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|5 end end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|013 + local.set $3 + loop $while-continue|014 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 44 @@ -17542,7 +15421,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|013 + br $while-continue|014 end end i32.const -1 @@ -17561,45 +15440,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf39 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf38 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf38 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|041 + local.set $3 + loop $while-continue|040 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf39 + br_if $__inlined_func$~lib/array/Array#indexOf38 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|041 + br $while-continue|040 end end i32.const -1 @@ -17620,45 +15499,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf42 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf41 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf42 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|044 + local.set $3 + loop $while-continue|043 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf42 + br_if $__inlined_func$~lib/array/Array#indexOf41 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|044 + br $while-continue|043 end end i32.const -1 @@ -17679,45 +15558,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 100 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf45 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf44 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 100 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf45 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf44 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|047 + local.set $3 + loop $while-continue|046 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf45 + br_if $__inlined_func$~lib/array/Array#indexOf44 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|047 + br $while-continue|046 end end i32.const -1 @@ -17742,17 +15621,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf48 + block $__inlined_func$~lib/array/Array#indexOf47 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf48 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf47 + local.get $3 i32.const 100 i32.sub local.tee $0 @@ -17765,9 +15644,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|050 + loop $while-continue|049 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -17778,12 +15657,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf48 + br_if $__inlined_func$~lib/array/Array#indexOf47 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|050 + br $while-continue|049 end end i32.const -1 @@ -17808,17 +15687,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf51 + block $__inlined_func$~lib/array/Array#indexOf50 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf51 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf50 + local.get $3 i32.const 2 i32.sub local.tee $0 @@ -17831,9 +15710,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|052 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -17844,12 +15723,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf51 + br_if $__inlined_func$~lib/array/Array#indexOf50 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|053 + br $while-continue|052 end end i32.const -1 @@ -17874,17 +15753,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf54 + block $__inlined_func$~lib/array/Array#indexOf53 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf54 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $3 i32.const 4 i32.sub local.tee $0 @@ -17897,9 +15776,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|056 + loop $while-continue|055 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -17910,12 +15789,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf54 + br_if $__inlined_func$~lib/array/Array#indexOf53 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|056 + br $while-continue|055 end end i32.const -1 @@ -17936,45 +15815,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf57 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf56 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf57 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf56 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|059 + local.set $3 + loop $while-continue|058 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf57 + br_if $__inlined_func$~lib/array/Array#indexOf56 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|059 + br $while-continue|058 end end i32.const -1 @@ -17995,45 +15874,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 1 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf60 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf59 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 1 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf60 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf59 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|062 + local.set $3 + loop $while-continue|061 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf60 + br_if $__inlined_func$~lib/array/Array#indexOf59 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|062 + br $while-continue|061 end end i32.const -1 @@ -18054,45 +15933,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 2 local.set $0 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf63 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf62 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf63 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf62 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|065 + local.set $3 + loop $while-continue|064 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf63 + br_if $__inlined_func$~lib/array/Array#indexOf62 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|065 + br $while-continue|064 end end i32.const -1 @@ -18116,37 +15995,37 @@ i32.const 10 i32.const 4000 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|067 + local.set $3 + loop $while-continue|066 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add f32.load f32.const nan:0x400000 @@ -18156,7 +16035,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|067 + br $while-continue|066 end end i32.const -1 @@ -18178,37 +16057,37 @@ i32.const 11 i32.const 4032 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store i32.const 0 local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|069 + local.set $3 + loop $while-continue|068 local.get $0 - local.get $3 + local.get $8 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load f64.const nan:0x8000000000000 @@ -18218,7 +16097,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|069 + br $while-continue|068 end end i32.const -1 @@ -18241,64 +16120,58 @@ i32.const 3 i32.const 4064 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=24 i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=12 - local.tee $0 - local.set $3 i32.const -1 - local.set $1 + local.set $3 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 + local.get $1 + i32.load offset=12 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf local.get $0 - local.get $3 + local.get $0 i32.add local.get $0 i32.const 1 i32.sub - local.get $3 local.get $0 - local.get $3 - i32.le_s - select - local.get $3 i32.const 0 i32.lt_s select - local.set $1 - local.get $2 - i32.load offset=4 local.set $0 - loop $while-continue|01 - local.get $1 + local.get $1 + i32.load offset=4 + local.set $8 + loop $while-continue|015 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $3 i32.const 2 i32.shl - local.get $0 + local.get $8 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 - br $while-continue|01 + local.set $0 + br $while-continue|015 end end i32.const -1 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.const 3 i32.ne if @@ -18311,60 +16184,54 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=12 - local.tee $0 - local.set $3 i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $0 + local.set $3 + block $__inlined_func$~lib/array/Array#lastIndexOf20 + local.get $1 + i32.load offset=12 + local.tee $0 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + br_if $__inlined_func$~lib/array/Array#lastIndexOf20 + local.get $0 local.get $0 - local.get $3 i32.add local.get $0 i32.const 1 i32.sub - local.get $3 local.get $0 - local.get $3 - i32.le_s - select - local.get $3 i32.const 0 i32.lt_s select - local.set $1 - local.get $2 - i32.load offset=4 local.set $0 - loop $while-continue|07 - local.get $1 + local.get $1 + i32.load offset=4 + local.set $8 + loop $while-continue|021 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $3 i32.const 2 i32.shl - local.get $0 + local.get $8 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf20 + local.get $3 i32.const 1 i32.sub - local.set $1 - br $while-continue|07 + local.set $0 + br $while-continue|021 end end i32.const -1 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.const -1 i32.ne if @@ -18376,50 +16243,50 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf8 - local.get $2 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf22 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $3 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf8 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf22 + local.get $3 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $3 i32.const 3 i32.le_s select - local.set $1 - local.get $2 - i32.load offset=4 local.set $0 - loop $while-continue|071 - local.get $1 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|070 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf8 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf22 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|071 + local.set $0 + br $while-continue|070 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18431,50 +16298,50 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf72 - local.get $2 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf71 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $3 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf72 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf71 + local.get $3 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $3 i32.const 2 i32.le_s select - local.set $1 - local.get $2 - i32.load offset=4 local.set $0 - loop $while-continue|074 - local.get $1 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|073 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf72 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf71 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|074 + local.set $0 + br $while-continue|073 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18484,45 +16351,45 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf75 - local.get $2 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf74 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $3 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf75 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf74 + local.get $3 i32.const 2 i32.sub - local.set $1 - local.get $2 - i32.load offset=4 local.set $0 - loop $while-continue|077 - local.get $1 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|076 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf75 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf74 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|077 + local.set $0 + br $while-continue|076 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18533,20 +16400,20 @@ end i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf78 - local.get $2 + block $__inlined_func$~lib/array/Array#lastIndexOf77 + local.get $1 i32.load offset=12 - local.tee $1 + local.tee $3 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf78 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf77 + local.get $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|080 + loop $while-continue|079 local.get $0 i32.const 0 i32.ge_s @@ -18559,12 +16426,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf78 + br_if $__inlined_func$~lib/array/Array#lastIndexOf77 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|080 + br $while-continue|079 end end i32.const -1 @@ -18583,45 +16450,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf9 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf23 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf9 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf23 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|010 + local.set $3 + loop $while-continue|024 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 44 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf9 + br_if $__inlined_func$~lib/array/Array#indexOf23 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|010 + br $while-continue|024 end end i32.const -1 @@ -18640,45 +16507,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf12 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf26 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf12 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|014 + local.set $3 + loop $while-continue|027 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf12 + br_if $__inlined_func$~lib/array/Array#indexOf26 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|014 + br $while-continue|027 end end i32.const -1 @@ -18697,45 +16564,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf16 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf29 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf16 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf29 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|017 + local.set $3 + loop $while-continue|030 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf16 + br_if $__inlined_func$~lib/array/Array#indexOf29 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|017 + br $while-continue|030 end end i32.const -1 @@ -18754,45 +16621,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 100 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf19 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf32 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 100 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf19 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf32 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|020 + local.set $3 + loop $while-continue|033 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf19 + br_if $__inlined_func$~lib/array/Array#indexOf32 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|020 + br $while-continue|033 end end i32.const -1 @@ -18815,17 +16682,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf22 + block $__inlined_func$~lib/array/Array#indexOf35 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf22 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf35 + local.get $3 i32.const 100 i32.sub local.tee $0 @@ -18838,9 +16705,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|023 + loop $while-continue|036 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -18851,12 +16718,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf22 + br_if $__inlined_func$~lib/array/Array#indexOf35 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|036 end end i32.const -1 @@ -18879,17 +16746,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf25 + block $__inlined_func$~lib/array/Array#indexOf39 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf25 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $3 i32.const 2 i32.sub local.tee $0 @@ -18902,9 +16769,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|026 + loop $while-continue|041 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -18915,12 +16782,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf25 + br_if $__inlined_func$~lib/array/Array#indexOf39 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|026 + br $while-continue|041 end end i32.const -1 @@ -18943,17 +16810,17 @@ i32.store i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf28 + block $__inlined_func$~lib/array/Array#indexOf43 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - br_if $__inlined_func$~lib/array/Array#indexOf28 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $3 i32.const 4 i32.sub local.tee $0 @@ -18966,9 +16833,9 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|029 + loop $while-continue|044 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -18979,12 +16846,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf28 + br_if $__inlined_func$~lib/array/Array#indexOf43 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|029 + br $while-continue|044 end end i32.const -1 @@ -19003,45 +16870,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf31 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf46 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf31 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf46 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|032 + local.set $3 + loop $while-continue|047 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf31 + br_if $__inlined_func$~lib/array/Array#indexOf46 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|032 + br $while-continue|047 end end i32.const -1 @@ -19060,45 +16927,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 1 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf34 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf49 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 1 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf34 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf49 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|035 + local.set $3 + loop $while-continue|050 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf34 + br_if $__inlined_func$~lib/array/Array#indexOf49 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|035 + br $while-continue|050 end end i32.const -1 @@ -19117,45 +16984,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store i32.const 2 local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf37 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf52 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $8 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $8 select - br_if $__inlined_func$~lib/array/Array#indexOf37 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf52 + local.get $3 i32.load offset=4 - local.set $2 - loop $while-continue|038 + local.set $3 + loop $while-continue|053 local.get $1 - local.get $3 + local.get $8 i32.lt_s if local.get $1 local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf37 + br_if $__inlined_func$~lib/array/Array#indexOf52 local.get $0 i32.const 1 i32.add local.set $1 - br $while-continue|038 + br $while-continue|053 end end i32.const -1 @@ -19187,20 +17054,20 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $__inlined_func$~lib/array/Array#includes drop local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|082 + loop $while-continue|081 local.get $0 - local.get $2 + local.get $3 i32.lt_s if i32.const 1 @@ -19210,11 +17077,11 @@ local.get $1 i32.add f32.load - local.tee $6 + local.tee $7 f32.const nan:0x400000 f32.eq - local.get $6 - local.get $6 + local.get $7 + local.get $7 f32.ne i32.or br_if $__inlined_func$~lib/array/Array#includes @@ -19223,7 +17090,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|082 + br $while-continue|081 end end i32.const 0 @@ -19252,20 +17119,20 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $__inlined_func$~lib/array/Array#includes drop local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|084 + loop $while-continue|083 local.get $0 - local.get $2 + local.get $3 i32.lt_s if i32.const 1 @@ -19275,11 +17142,11 @@ local.get $1 i32.add f64.load - local.tee $4 + local.tee $6 f64.const nan:0x8000000000000 f64.eq - local.get $4 - local.get $4 + local.get $6 + local.get $6 f64.ne i32.or br_if $__inlined_func$~lib/array/Array#includes @@ -19288,7 +17155,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|084 + br $while-continue|083 end end i32.const 0 @@ -19398,12 +17265,12 @@ i32.const 3 i32.const 4224 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19458,12 +17325,12 @@ i32.const 3 i32.const 4352 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19518,12 +17385,12 @@ i32.const 3 i32.const 4480 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19578,12 +17445,12 @@ i32.const 3 i32.const 4592 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19638,12 +17505,12 @@ i32.const 3 i32.const 4704 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19698,12 +17565,12 @@ i32.const 3 i32.const 4832 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19758,12 +17625,12 @@ i32.const 3 i32.const 4960 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19818,12 +17685,12 @@ i32.const 3 i32.const 5072 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19878,12 +17745,12 @@ i32.const 3 i32.const 5200 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19938,12 +17805,12 @@ i32.const 3 i32.const 5328 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19998,12 +17865,12 @@ i32.const 3 i32.const 5456 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20058,12 +17925,12 @@ i32.const 3 i32.const 5584 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20118,12 +17985,12 @@ i32.const 3 i32.const 5712 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20178,12 +18045,12 @@ i32.const 3 i32.const 5840 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20428,39 +18295,39 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store i32.const 0 local.get $1 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $8 + local.get $8 i32.const 0 i32.gt_s select local.set $9 - local.get $2 - i32.const 1 local.get $3 + i32.const 1 + local.get $8 local.get $9 i32.sub - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 1 i32.gt_s select - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $3 i32.const 2 i32.const 12 i32.const 0 @@ -20477,12 +18344,12 @@ i32.shl i32.add local.tee $12 - local.get $2 + local.get $3 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy + local.get $8 local.get $3 - local.get $2 local.get $9 i32.add local.tee $9 @@ -20494,16 +18361,16 @@ i32.shl local.get $11 i32.add - local.get $3 + local.get $8 local.get $9 i32.sub i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy end local.get $1 + local.get $8 local.get $3 - local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -20646,15 +18513,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|093 - local.get $2 + loop $for-loop|092 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -20679,7 +18546,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|093 + br $for-loop|092 end end i32.const -1 @@ -20708,15 +18575,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex95 - loop $for-loop|097 - local.get $2 + local.set $3 + block $__inlined_func$~lib/array/Array#findIndex94 + loop $for-loop|096 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -20736,12 +18603,12 @@ i32.const 6176 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex95 + br_if $__inlined_func$~lib/array/Array#findIndex94 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|097 + br $for-loop|096 end end i32.const -1 @@ -20772,15 +18639,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex99 - loop $for-loop|0101 - local.get $2 + local.set $3 + block $__inlined_func$~lib/array/Array#findIndex98 + loop $for-loop|0100 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -20800,12 +18667,12 @@ i32.const 6208 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex99 + br_if $__inlined_func$~lib/array/Array#findIndex98 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0101 + br $for-loop|0100 end end i32.const -1 @@ -20836,15 +18703,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex103 - loop $for-loop|0105 - local.get $2 + local.set $3 + block $__inlined_func$~lib/array/Array#findIndex102 + loop $for-loop|0104 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -20864,12 +18731,12 @@ i32.const 6240 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex103 + br_if $__inlined_func$~lib/array/Array#findIndex102 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0105 + br $for-loop|0104 end end i32.const -1 @@ -20916,15 +18783,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex108 - loop $for-loop|0110 - local.get $2 + local.set $3 + block $__inlined_func$~lib/array/Array#findIndex107 + loop $for-loop|0109 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -20944,12 +18811,12 @@ i32.const 6272 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex108 + br_if $__inlined_func$~lib/array/Array#findIndex107 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0110 + br $for-loop|0109 end end i32.const -1 @@ -21007,15 +18874,15 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex112 - loop $for-loop|0114 - local.get $2 + local.set $3 + block $__inlined_func$~lib/array/Array#findIndex111 + loop $for-loop|0113 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21035,12 +18902,12 @@ i32.const 6304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex112 + br_if $__inlined_func$~lib/array/Array#findIndex111 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0114 + br $for-loop|0113 end end i32.const -1 @@ -21082,7 +18949,6 @@ local.get $0 i32.const 2 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -21090,55 +18956,54 @@ local.get $0 i32.const 3 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 i32.const 6336 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 6384 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 + local.set $0 block $__inlined_func$~lib/array/Array#findLastIndex - loop $for-loop|0118 - local.get $1 + loop $for-loop|0117 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $2 i32.const 6384 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0118 + local.set $0 + br $for-loop|0117 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i if @@ -21152,43 +19017,43 @@ global.get $~lib/memory/__stack_pointer i32.const 6416 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex120 - loop $for-loop|0122 - local.get $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findLastIndex119 + loop $for-loop|0121 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $2 i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex120 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findLastIndex119 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0122 + local.set $0 + br $for-loop|0121 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -21204,43 +19069,43 @@ global.get $~lib/memory/__stack_pointer i32.const 6448 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex124 - loop $for-loop|0126 - local.get $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findLastIndex123 + loop $for-loop|0125 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $2 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex124 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findLastIndex123 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0126 + local.set $0 + br $for-loop|0125 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21256,18 +19121,18 @@ global.get $~lib/memory/__stack_pointer i32.const 6480 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex128 - loop $for-loop|0130 + block $__inlined_func$~lib/array/Array#findLastIndex127 + loop $for-loop|0129 local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $1 i32.load offset=4 local.get $0 i32.const 2 @@ -21277,16 +19142,16 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $1 i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex128 + br_if $__inlined_func$~lib/array/Array#findLastIndex127 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0130 + br $for-loop|0129 end end i32.const -1 @@ -21318,14 +19183,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0133 - local.get $2 + local.set $3 + loop $for-loop|0132 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21338,11 +19203,11 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6512 @@ -21355,7 +19220,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0133 + br $for-loop|0132 end end i32.const 1 @@ -21369,7 +19234,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#every135 (result i32) + block $__inlined_func$~lib/array/Array#every134 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21382,14 +19247,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0137 - local.get $2 + local.set $3 + loop $for-loop|0136 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21402,24 +19267,24 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every135 + br_if $__inlined_func$~lib/array/Array#every134 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0137 + br $for-loop|0136 end end i32.const 1 @@ -21432,7 +19297,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#every139 (result i32) + block $__inlined_func$~lib/array/Array#every138 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21445,14 +19310,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0141 - local.get $2 + local.set $3 + loop $for-loop|0140 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21465,24 +19330,24 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every139 + br_if $__inlined_func$~lib/array/Array#every138 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0141 + br $for-loop|0140 end end i32.const 1 @@ -21512,7 +19377,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#every144 (result i32) + block $__inlined_func$~lib/array/Array#every143 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21525,14 +19390,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0146 - local.get $2 + local.set $3 + loop $for-loop|0145 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21545,24 +19410,24 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every144 + br_if $__inlined_func$~lib/array/Array#every143 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0146 + br $for-loop|0145 end end i32.const 1 @@ -21603,7 +19468,7 @@ local.get $0 call $~lib/array/Array#pop drop - block $__inlined_func$~lib/array/Array#every148 (result i32) + block $__inlined_func$~lib/array/Array#every147 (result i32) global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $1 @@ -21615,14 +19480,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0150 - local.get $2 + local.set $3 + loop $for-loop|0149 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21635,24 +19500,24 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every148 + br_if $__inlined_func$~lib/array/Array#every147 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0150 + br $for-loop|0149 end end i32.const 1 @@ -21689,7 +19554,6 @@ local.get $0 i32.const 2 call $~lib/array/Array#push - drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -21697,7 +19561,6 @@ local.get $0 i32.const 3 call $~lib/array/Array#push - drop block $__inlined_func$~lib/array/Array#some (result i32) global.get $~lib/memory/__stack_pointer global.get $std/array/arr @@ -21710,14 +19573,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0154 - local.get $2 + local.set $3 + loop $for-loop|0153 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21730,11 +19593,11 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6672 @@ -21746,7 +19609,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0154 + br $for-loop|0153 end end i32.const 0 @@ -21760,7 +19623,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#some156 (result i32) + block $__inlined_func$~lib/array/Array#some155 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21773,14 +19636,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0158 - local.get $2 + local.set $3 + loop $for-loop|0157 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21793,23 +19656,23 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some156 + br_if $__inlined_func$~lib/array/Array#some155 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0158 + br $for-loop|0157 end end i32.const 0 @@ -21822,7 +19685,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#some160 (result i32) + block $__inlined_func$~lib/array/Array#some159 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21835,14 +19698,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0162 - local.get $2 + local.set $3 + loop $for-loop|0161 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21855,23 +19718,23 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some160 + br_if $__inlined_func$~lib/array/Array#some159 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0162 + br $for-loop|0161 end end i32.const 0 @@ -21900,7 +19763,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#some165 (result i32) + block $__inlined_func$~lib/array/Array#some164 (result i32) global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr @@ -21913,14 +19776,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0167 - local.get $2 + local.set $3 + loop $for-loop|0166 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -21933,23 +19796,23 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some165 + br_if $__inlined_func$~lib/array/Array#some164 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0167 + br $for-loop|0166 end end i32.const 0 @@ -21991,7 +19854,7 @@ local.get $0 call $~lib/array/Array#pop drop - block $__inlined_func$~lib/array/Array#some169 (result i32) + block $__inlined_func$~lib/array/Array#some168 (result i32) global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $1 @@ -22003,14 +19866,14 @@ local.set $0 local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0171 - local.get $2 + local.set $3 + loop $for-loop|0170 + local.get $3 local.get $1 i32.load offset=12 - local.tee $3 - local.get $2 + local.tee $8 local.get $3 + local.get $8 i32.lt_s select local.get $0 @@ -22023,23 +19886,23 @@ i32.shl i32.add i32.load - local.set $3 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 + local.get $8 local.get $0 local.get $1 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some169 + br_if $__inlined_func$~lib/array/Array#some168 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0171 + br $for-loop|0170 end end i32.const 0 @@ -22062,9467 +19925,2914 @@ i32.ne if i32.const 0 - i32.const 1552 - i32.const 674 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6832 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0175 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 6832 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0175 - end - end - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 685 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 6864 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0179 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 6864 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0179 - end - end - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 694 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 6896 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0184 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 6896 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0184 - end - end - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 698 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6928 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0188 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 6928 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0188 - end - end - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 713 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6960 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0193 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 6960 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0193 - end - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 738 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|6 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store - local.get $1 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|6 - end - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6992 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $2 - i32.load offset=12 - local.tee $3 - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__newArray - local.tee $9 - i32.store - local.get $9 - i32.load offset=4 - local.set $10 - i32.const 0 - local.set $0 - loop $for-loop|0197 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $11 - local.get $3 - local.get $11 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $0 - i32.const 2 - i32.shl - local.tee $11 - local.get $2 - i32.load offset=4 - i32.add - i32.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - local.get $10 - local.get $11 - i32.add - local.get $12 - local.get $0 - local.get $2 - i32.const 6992 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_f32) - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0197 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 - local.get $9 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 752 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 0 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - local.get $6 - f32.ne - if - i32.const 0 - i32.const 1552 - i32.const 753 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 7024 - i32.store offset=8 - local.get $1 - i32.const 7024 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 762 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 763 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 7056 - i32.store offset=8 - local.get $1 - i32.const 7056 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 770 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7088 - i32.store offset=8 - local.get $0 - i32.const 7088 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 785 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 786 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7120 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 7120 - call $~lib/array/Array#filter - local.tee $0 - i32.store offset=12 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 796 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 7152 - i32.store offset=8 - local.get $1 - i32.const 7152 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 805 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 806 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $1 - i32.store - local.get $0 - i32.const 7184 - i32.store offset=8 - local.get $1 - i32.const 7184 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 813 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7216 - i32.store offset=8 - local.get $0 - i32.const 7216 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 828 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 829 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7248 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0206 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7248 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0206 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 839 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7280 - i32.store offset=8 - i32.const 4 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0210 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7280 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0210 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 843 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7312 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0214 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7312 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0214 - end - end - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 846 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7344 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0218 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7344 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0218 - end - end - local.get $1 - if - i32.const 0 - i32.const 1552 - i32.const 849 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7376 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0222 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7376 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0222 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 857 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 858 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7408 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0227 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7408 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0227 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 860 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7440 - i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=12 - local.set $3 - loop $for-loop|0231 - local.get $3 - local.get $2 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $9 - local.get $0 - local.get $2 - i32.const 7440 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0231 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 873 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 874 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7472 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0235 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7472 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0235 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 884 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7504 - i32.store offset=8 - i32.const 4 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0239 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7504 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0239 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 888 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7536 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0243 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7536 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0243 - end - end - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 891 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7568 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0247 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7568 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0247 - end - end - local.get $1 - if - i32.const 0 - i32.const 1552 - i32.const 894 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7600 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0251 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7600 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0251 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 902 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 903 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 7632 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0256 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7632 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0256 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 905 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7664 - i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0260 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $3 - local.get $0 - local.get $2 - i32.const 7664 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0260 - end - end - local.get $1 - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 918 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - if - i32.const 0 - i32.const 1552 - i32.const 919 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - i64.const -7046029254386353131 - call $~lib/bindings/Math/random - i64.reinterpret_f64 - local.tee $5 - local.get $5 - i64.eqz - select - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $5 - local.get $5 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - i32.const 1 - global.set $~lib/math/random_seeded - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=20 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 80 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=24 - local.get $1 - i32.const 90 - i32.store - local.get $1 - i32.const 90 - i32.store offset=4 - local.get $0 - i32.const 1 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=28 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 95 - i32.store offset=4 - local.get $0 - i32.const 2 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 100 - i32.store offset=4 - local.get $0 - i32.const 3 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=32 - local.get $1 - i32.const 80 - i32.store - local.get $1 - i32.const 110 - i32.store offset=4 - local.get $0 - i32.const 4 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=36 - local.get $1 - i32.const 110 - i32.store - local.get $1 - i32.const 115 - i32.store offset=4 - local.get $0 - i32.const 5 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=40 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 120 - i32.store offset=4 - local.get $0 - i32.const 6 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=44 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 125 - i32.store offset=4 - local.get $0 - i32.const 7 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=48 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 130 - i32.store offset=4 - local.get $0 - i32.const 8 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=52 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 135 - i32.store offset=4 - local.get $0 - i32.const 9 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=56 - local.get $1 - i32.const 75 - i32.store - local.get $1 - i32.const 140 - i32.store offset=4 - local.get $0 - i32.const 10 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=60 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 140 - i32.store offset=4 - local.get $0 - i32.const 11 - local.get $1 - call $~lib/array/Array#__uset - local.get $0 - global.set $std/array/inputStabArr - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=64 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 95 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=68 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 125 - i32.store offset=4 - local.get $0 - i32.const 1 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=72 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 130 - i32.store offset=4 - local.get $0 - i32.const 2 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=76 - local.get $1 - i32.const 70 - i32.store - local.get $1 - i32.const 140 - i32.store offset=4 - local.get $0 - i32.const 3 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=80 - local.get $1 - i32.const 75 - i32.store - local.get $1 - i32.const 140 - i32.store offset=4 - local.get $0 - i32.const 4 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=84 - local.get $1 - i32.const 80 - i32.store - local.get $1 - i32.const 110 - i32.store offset=4 - local.get $0 - i32.const 5 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=88 - local.get $1 - i32.const 90 - i32.store - local.get $1 - i32.const 90 - i32.store offset=4 - local.get $0 - i32.const 6 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=92 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 80 - i32.store offset=4 - local.get $0 - i32.const 7 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=96 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 100 - i32.store offset=4 - local.get $0 - i32.const 8 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=100 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 120 - i32.store offset=4 - local.get $0 - i32.const 9 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=104 - local.get $1 - i32.const 100 - i32.store - local.get $1 - i32.const 135 - i32.store offset=4 - local.get $0 - i32.const 10 - local.get $1 - call $~lib/array/Array#__uset - global.get $~lib/memory/__stack_pointer - call $std/array/Dim#constructor - local.tee $1 - i32.store offset=108 - local.get $1 - i32.const 110 - i32.store - local.get $1 - i32.const 115 - i32.store offset=4 - local.get $0 - i32.const 11 - local.get $1 - call $~lib/array/Array#__uset - local.get $0 - global.set $std/array/outputStabArr - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 10 - i32.const 7888 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - i32.const 0 - global.set $~argumentsLength - local.get $0 - call $~lib/array/Array#sort@varargs - i32.const 3 - i32.const 2 - i32.const 10 - i32.const 7952 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1057 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 10 - i32.const 7984 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 - i32.const 0 - global.set $~argumentsLength - local.get $0 - call $~lib/array/Array#sort@varargs - i32.const 8 - i32.const 2 - i32.const 10 - i32.const 8048 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1061 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 11 - i32.const 8112 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=112 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of139 - block $0of140 - block $outOfRange41 - global.get $~argumentsLength - br_table $0of140 $1of139 $outOfRange41 - end - unreachable - end - i32.const 8208 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8208 - i32.store - end - local.get $2 - i32.load offset=4 - local.get $2 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 8 - i32.const 3 - i32.const 11 - i32.const 8240 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 0 - local.get $2 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - i32.const 1 - local.get $1 - local.get $2 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - i32.const 0 - local.set $0 - loop $for-loop|029 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/array/Array#__get - local.tee $4 - local.get $4 - f64.ne - if (result i32) - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.tee $4 - local.get $4 - f64.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - local.get $1 - local.get $0 - call $~lib/array/Array#__get - f64.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|029 - end - end - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1065 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 8336 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=116 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1309 - block $0of1310 - block $outOfRange311 - global.get $~argumentsLength - br_table $0of1310 $1of1309 $outOfRange311 - end - unreachable - end - i32.const 8384 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8384 - i32.store - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 8416 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1069 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 8464 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=120 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 8544 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1073 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 8592 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=124 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 8624 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 8656 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=132 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 8688 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 8736 - call $~lib/rt/__newArray - local.tee $9 - i32.store offset=140 - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createReverseOrderedArray - local.tee $10 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - i32.const 128 - call $std/array/createReverseOrderedArray - local.tee $11 - i32.store offset=148 - global.get $~lib/memory/__stack_pointer - i32.const 1024 - call $std/array/createReverseOrderedArray - local.tee $12 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - i32.const 10000 - call $std/array/createReverseOrderedArray - local.tee $13 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 512 - call $std/array/createRandomOrderedArray - local.tee $14 - i32.store offset=160 - local.get $0 - call $std/array/assertSortedDefault - local.get $1 - call $std/array/assertSortedDefault - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 8816 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1093 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $std/array/assertSortedDefault - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 8848 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - local.get $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1096 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $std/array/assertSortedDefault - local.get $3 - local.get $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1099 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $std/array/assertSortedDefault - local.get $10 - local.get $9 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $std/array/assertSortedDefault - local.get $11 - local.get $9 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $12 - call $std/array/assertSortedDefault - local.get $12 - local.get $9 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $13 - call $std/array/assertSortedDefault - local.get $13 - local.get $9 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $std/array/assertSortedDefault - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/assertStableSortedForComplexObjects - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - global.get $std/array/inputStabArr - local.tee $2 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - local.get $2 - i32.load offset=12 - local.tee $3 - local.get $3 - i32.const 0 - i32.gt_s - select - local.set $9 - local.get $0 - local.get $3 - local.get $9 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $3 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $10 - i32.store - local.get $10 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.set $2 - local.get $3 - i32.const 2 - i32.shl - local.set $3 - loop $while-continue|00 - local.get $3 - local.get $8 - i32.gt_u - if - local.get $0 - local.get $8 - i32.add - local.get $2 - local.get $8 - i32.add - i32.load - local.tee $9 - i32.store - local.get $9 - if - local.get $10 - local.get $9 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $8 - i32.const 4 - i32.add - local.set $8 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=4 - local.get $10 - i32.load offset=4 - local.get $10 - i32.load offset=12 - i32.const 8880 - call $~lib/util/sort/SORT - local.get $1 - local.get $10 - i32.store offset=12 - i32.const 1 - local.set $0 - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.tee $1 - i32.store - local.get $1 - i32.load offset=12 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $7 - i32.gt_s - if - block $for-break0 - global.get $~lib/memory/__stack_pointer - local.get $10 - local.get $7 - call $~lib/array/Array#__get - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 - call $~lib/array/Array#__get - local.tee $3 - i32.store offset=20 - local.get $2 - i32.load - local.get $3 - i32.load - i32.ne - if (result i32) - i32.const 1 - else - local.get $2 - i32.load offset=4 - local.get $3 - i32.load offset=4 - i32.ne - end - if - i32.const 0 - local.set $0 - br $for-break0 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|02 - end - end - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1042 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$std/array/assertStableSortedForComplexObjects - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createRandomOrderedArray - local.tee $0 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 257 - call $std/array/createRandomOrderedArray - local.tee $1 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8944 - i32.store offset=8 - local.get $0 - i32.const 8944 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8976 - i32.store offset=8 - local.get $1 - i32.const 8976 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 9008 - i32.store offset=8 - local.get $1 - i32.const 9008 - call $std/array/assertSorted - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 26 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store - local.get $3 - if - local.get $2 - local.get $3 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 32 - i32.store offset=8 - local.get $2 - i32.const 2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|0313 - local.get $0 - i32.const 2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/array/Array#constructor - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 1 - local.get $0 - i32.sub - call $~lib/array/Array#__set - local.get $2 - local.get $0 - local.get $3 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0313 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=8 - local.get $2 - i32.const 9040 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store - local.get $3 - if - local.get $2 - local.get $3 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - i32.const 2048 - i32.store offset=8 - local.get $2 - i32.const 512 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.store - i32.const 0 - local.set $1 - loop $for-loop|039 - local.get $1 - i32.const 512 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 4 - i32.const 28 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 511 - local.get $1 - i32.sub - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|039 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 9072 - i32.store offset=8 - local.get $2 - i32.const 9072 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 9264 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 9312 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=152 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of145 - block $0of146 - block $outOfRange47 - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of146 $1of145 $outOfRange47 - end - unreachable - end - i32.const 9360 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 9360 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $2 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $7 - loop $for-loop|048 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $9 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null> - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|048 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1046 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.tee $1 - local.get $3 - i32.load offset=12 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> - end - local.get $0 - local.get $3 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> - end - i32.const 0 - local.set $2 - loop $for-loop|045 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $3 - local.get $2 - call $~lib/array/Array#__get - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $7 - local.get $8 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|045 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $7 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.const 400 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $8 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|049 - local.get $0 - i32.const 400 - i32.lt_s - if - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 9232 - local.set $0 - local.get $1 - i32.const 9232 - i32.store - i32.const 0 - local.set $1 - loop $for-loop|023 - local.get $1 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.tee $10 - i32.const 7696 - i32.store offset=4 - call $~lib/math/NativeMath.random - global.get $~lib/memory/__stack_pointer - i32.const 7696 - i32.store offset=8 - i32.const 7692 - i32.load - i32.const 1 - i32.shr_u - f64.convert_i32_s - f64.mul - f64.floor - i32.trunc_f64_s - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - local.get $0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#charAt - i32.const 7692 - i32.load - i32.const 1 - i32.shr_u - local.get $11 - i32.le_u - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/string/String#charAt - end - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.const 7696 - i32.add - i32.load16_u - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $10 - local.get $3 - local.get $0 - call $~lib/string/String.__concat - local.tee $0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|023 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $8 - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 - i32.const 1 - i32.add - local.set $0 - br $for-loop|049 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $8 - i32.store offset=156 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of152 - block $0of153 - block $outOfRange54 - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of153 $1of152 $outOfRange54 - end - unreachable - end - i32.const 9392 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9392 - i32.store - end - local.get $8 - local.get $0 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - i32.const 0 - i32.const 35 - i32.const 9424 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=164 - global.get $~lib/memory/__stack_pointer - i32.const 9520 - i32.store offset=168 - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinBooleanArray - local.get $0 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinBooleanArray - end - local.get $7 - i32.eqz - if - i32.const 9456 - i32.const 9488 - local.get $2 - i32.load8_u - select - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinBooleanArray - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|149 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.tee $10 - i32.eqz - i32.const 4 - i32.add - local.set $11 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9456 - i32.const 9488 - local.get $10 - select - local.get $11 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $11 - i32.add - local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|149 - end - end - local.get $2 - local.get $7 - i32.add - i32.load8_u - local.tee $2 - i32.eqz - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9456 - i32.const 9488 - local.get $2 - select - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $0 - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinBooleanArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 9552 - i32.store offset=8 - local.get $0 - i32.const 9552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 9600 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 9232 - i32.store offset=168 - local.get $0 - i32.const 9232 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11408 - i32.store offset=8 - local.get $0 - i32.const 11408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1160 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 11440 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 11472 - i32.store offset=168 - local.get $0 - i32.const 11472 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11408 - i32.store offset=8 - local.get $0 - i32.const 11408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11504 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 11536 - i32.store offset=168 - local.get $0 - i32.const 11536 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - local.get $0 - i32.const 11568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1162 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 11 - i32.const 11648 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 11728 - i32.store offset=168 - local.get $0 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12896 - i32.store offset=8 - local.get $0 - i32.const 12896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1163 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 31 - i32.const 13040 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 9232 - i32.store offset=168 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9232 - call $~lib/util/string/joinStringArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13008 - i32.store offset=8 - local.get $0 - i32.const 13008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 3 - i32.const 2 - i32.const 12 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=152 - local.get $1 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/Array#__uset - local.get $1 - i32.const 2 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - i32.const 9520 - i32.store offset=168 - local.get $1 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13136 - i32.store offset=8 - local.get $0 - i32.const 13136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=160 - local.get $1 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 9520 - i32.store offset=168 - local.get $1 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13232 - i32.store offset=8 - local.get $0 - i32.const 13232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13328 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 13360 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 13392 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=148 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 13424 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=144 - local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9232 - i32.store offset=8 - local.get $0 - i32.const 9232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1179 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 13008 - i32.store offset=8 - local.get $0 - i32.const 13008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1180 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 13472 - i32.store offset=8 - local.get $0 - i32.const 13472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 13504 - i32.store offset=8 - local.get $0 - i32.const 13504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 36 - i32.const 13552 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $0 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - local.get $7 - i32.eqz - if - local.get $3 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|050 - local.get $2 - local.get $7 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $2 - local.get $3 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|050 - end - end - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $3 - local.get $7 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13584 - i32.store offset=8 - local.get $0 - i32.const 13584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 9 - i32.const 13616 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $0 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - local.get $7 - i32.eqz - if - local.get $3 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|051 - local.get $2 - local.get $7 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|051 - end - end - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $7 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 13648 - i32.store offset=8 - local.get $0 - i32.const 13648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1185 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 37 - i32.const 13696 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13744 - i32.store offset=8 - local.get $0 - i32.const 13744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1186 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 38 - i32.const 13824 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - call $~lib/array/Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13888 - i32.store offset=8 - local.get $0 - i32.const 13888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 31 - i32.const 14000 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=140 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14048 - i32.store offset=8 - local.get $0 - i32.const 14048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1191 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 31 - i32.const 14160 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=164 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14208 - i32.store offset=8 - local.get $0 - i32.const 14208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1192 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=160 - local.get $1 - i32.const 0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 14240 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 14272 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 9520 - i32.store - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=12 - local.set $1 - local.get $0 - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $0 - i32.store - local.get $0 - if (result i32) - local.get $0 - call $~lib/array/Array#toString - else - i32.const 9232 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - end - i32.const 9232 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9232 - i32.store offset=4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|052 - local.get $1 - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $8 - call $~lib/array/Array#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $0 - local.get $8 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9520 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|052 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/array/Array#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14304 - i32.store offset=8 - local.get $0 - i32.const 14304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1195 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=132 - local.get $1 - i32.const 0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 14352 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 14384 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=132 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 9520 - i32.store - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=12 - local.set $1 - local.get $0 - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $0 - i32.store - local.get $0 - if (result i32) - local.get $0 - call $~lib/array/Array#toString - else - i32.const 9232 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - end - i32.const 9232 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9232 - i32.store offset=4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|053 - local.get $1 - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - if - global.get $~lib/memory/__stack_pointer - local.get $8 - call $~lib/array/Array#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $0 - local.get $8 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9520 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|053 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/array/Array#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14304 - i32.store offset=8 - local.get $0 - i32.const 14304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 41 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=136 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 40 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=124 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=4 - i32.store offset=120 - local.get $2 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 14416 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 0 - local.get $2 - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 9520 - i32.store - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=12 - local.set $1 - local.get $0 - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $0 - i32.store - local.get $0 - if (result i32) - local.get $0 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 9232 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - end - i32.const 9232 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9232 - i32.store offset=4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|054 - local.get $1 - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - if - global.get $~lib/memory/__stack_pointer - 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=8 - local.get $0 - local.get $8 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $7 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9520 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|054 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13008 - i32.store offset=8 - local.get $0 - i32.const 13008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=128 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=132 - local.get $1 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 14448 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 14480 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 2 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 14512 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 3 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 14544 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=132 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $1 - i32.store offset=128 - local.get $1 - i32.load offset=12 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1208 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|7 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1210 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|7 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.const 2 - i32.const 42 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=140 - local.get $1 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 31 - i32.const 14608 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 31 - i32.const 14704 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 2 - i32.const 3 - i32.const 2 - i32.const 31 - i32.const 14832 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 3 - i32.const 1 - i32.const 2 - i32.const 31 - i32.const 14896 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=140 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=4 - local.set $7 - local.get $1 - i32.load offset=12 - local.set $8 - i32.const 0 - local.set $2 - i32.const 0 - local.set $0 - loop $for-loop|0317 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.tee $1 - if (result i32) - local.get $1 - i32.load offset=12 - else - i32.const 0 - end - local.get $2 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0317 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $10 - i32.store offset=4 - local.get $10 - local.get $2 - i32.store offset=12 - local.get $10 - local.get $0 - i32.store offset=8 - local.get $10 - local.get $9 - i32.store offset=4 - local.get $10 - local.get $9 - i32.store - local.get $9 - if - local.get $10 - local.get $9 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|1320 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.tee $11 - if - local.get $1 - local.get $9 - i32.add - local.get $11 - i32.load offset=4 - local.get $11 - i32.load offset=12 - i32.const 2 - i32.shl - local.tee $11 - call $~lib/memory/memory.copy - local.get $1 - local.get $11 - i32.add - local.set $1 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1320 - end - end - i32.const 0 - local.set $0 - loop $for-loop|2323 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $9 - i32.add - i32.load - local.tee $1 - if - local.get $9 - local.get $1 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|2323 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=160 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 31 - i32.const 14928 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=148 - local.get $10 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1216 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $0 - i32.load offset=12 - local.get $1 - i32.gt_s - if - local.get $10 - local.get $1 - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1218 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=156 - local.get $1 - i32.const 0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 14992 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 15024 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=156 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#flat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - if - i32.const 0 - i32.const 1552 - i32.const 1222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=144 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=152 - local.get $1 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 15056 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $1 - i32.const 1 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 15088 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - local.get $1 - i32.store offset=152 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15120 - i32.store offset=164 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - local.tee $3 - i32.const 2 - i32.const 26 - i32.const 0 - call $~lib/rt/__newArray - local.tee $7 - i32.store - local.get $7 - i32.load offset=4 - local.set $8 - i32.const 0 - local.set $0 - loop $for-loop|065 - local.get $3 - local.get $1 - i32.load offset=12 - local.tee $9 - local.get $3 - local.get $9 - i32.lt_s - select - local.get $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.tee $9 - local.get $0 - i32.const 2 - i32.shl - local.tee $10 - local.get $1 - i32.load offset=4 - i32.add - i32.load - local.tee $11 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $9 - local.get $11 - local.get $0 - local.get $1 - i32.const 15120 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - local.tee $9 - i32.store offset=8 - local.get $8 - local.get $10 - i32.add - local.get $9 - i32.store - local.get $9 - if - local.get $7 - local.get $9 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|065 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $0 - i32.store offset=144 - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1232 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1233 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/arr - i32.const 0 - global.set $std/array/inputStabArr - i32.const 0 - global.set $std/array/outputStabArr - i32.const 32036 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0330 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0330 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 172 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - local.get $0 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store - local.get $3 - if - local.get $1 - local.get $3 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $std/array/Ref#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/itcms/__new - local.set $5 - local.get $3 - if - local.get $5 - local.get $3 - local.get $1 - call $~lib/memory/memory.copy - end - local.get $4 - local.get $5 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $5 - i32.store - local.get $5 - if - local.get $2 - local.get $5 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_s - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $2 - i32.add - local.tee $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 244 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 + i32.const 1552 + i32.const 674 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6832 + i32.store offset=8 i32.const 0 + local.set $0 local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|0174 + local.get $3 + local.get $1 + i32.load offset=12 + local.tee $8 + local.get $3 + local.get $8 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 6832 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0174 + end + end + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 685 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $5 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $5 - i32.add - local.tee $4 - i32.ne - if - local.get $6 - local.get $4 - i32.const 2 - i32.shl - local.get $2 - i32.add - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $5 - i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 2 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6864 + i32.store offset=8 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $5 - i32.sub - local.tee $1 - local.get $1 - i32.const 2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $4 - local.get $3 - local.get $5 - i32.add - local.tee $5 - i32.ne - if - local.get $2 - local.get $5 - i32.const 2 - i32.shl + local.set $0 local.get $1 - i32.add - local.get $4 - local.get $5 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $4 - local.get $3 - i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 5952 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#__get (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $4 - loop $for-loop|0 - local.get $3 + i32.load offset=12 + local.set $3 + loop $for-loop|0178 + local.get $3 + local.get $1 + i32.load offset=12 + local.tee $8 + local.get $3 + local.get $8 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 6864 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0178 + end + end + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 694 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.const 8 + i32.ne if - local.get $2 - i32.const 2 - i32.shl - local.tee $5 + i32.const 0 + i32.const 1552 + i32.const 695 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6896 + i32.store offset=8 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|0183 + local.get $3 + local.get $1 + i32.load offset=12 + local.tee $8 + local.get $3 + local.get $8 + i32.lt_s + select local.get $0 - i32.load offset=4 - i32.add - i32.load - local.set $6 + i32.gt_s + if + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 6896 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0183 + end + end + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 698 i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $5 - i32.add - local.get $6 - local.get $2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6928 + i32.store offset=8 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|0187 + local.get $3 + local.get $1 + i32.load offset=12 + local.tee $8 + local.get $3 + local.get $8 + i32.lt_s + select local.get $0 + i32.gt_s + if + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 6928 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0187 + end + end + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 713 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=8 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|0192 + local.get $3 local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.load offset=12 + local.tee $8 + local.get $3 + local.get $8 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 6960 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0192 + end end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.const 100 + i32.ne if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + i32.const 0 + i32.const 1552 + i32.const 738 i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|6 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.const 100 + i32.lt_s if - local.get $4 - local.get $5 - call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|6 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $std/array/Dim#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#sort@varargs (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6992 + 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 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $3 + i32.load offset=12 + local.tee $8 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $9 + i32.store + local.get $9 + i32.load offset=4 + local.set $10 + i32.const 0 + local.set $0 + loop $for-loop|0196 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $11 + local.get $8 + local.get $11 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $0 + i32.const 2 + i32.shl + local.tee $11 + local.get $3 + i32.load offset=4 + i32.add + i32.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + local.get $10 + local.get $11 + i32.add + local.get $12 + local.get $0 + local.get $3 + i32.const 6992 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_f32) + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0196 end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 752 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 7920 - local.set $1 + local.get $9 + i32.const 0 + call $~lib/array/Array#__get + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 7920 + global.get $std/array/arr + local.tee $0 i32.store - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + local.get $7 + f32.ne + if + i32.const 0 + i32.const 1552 + i32.const 753 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 8512 - local.set $1 + i32.const 0 + global.set $std/array/i global.get $~lib/memory/__stack_pointer - i32.const 8512 + local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#constructor - local.tee $2 - i32.store - loop $for-loop|0 local.get $0 + i32.const 7024 + i32.store offset=8 local.get $1 - i32.gt_s + i32.const 7024 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 6 + i32.ne if - local.get $2 - local.get $1 - local.get $0 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1552 + i32.const 762 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#constructor - local.tee $2 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 763 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 7056 + i32.store offset=8 + local.get $1 + i32.const 7056 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 770 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7088 + i32.store offset=8 + local.get $0 + i32.const 7088 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 785 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - local.get $1 - i32.gt_s + i32.load offset=12 + i32.const 2 + i32.ne if - local.get $2 - local.get $1 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1552 + i32.const 786 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 33 - call $~lib/rt/itcms/__new + global.get $std/array/arr local.tee $0 i32.store - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - local.get $2 - if local.get $0 - local.get $2 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7120 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 7120 + call $~lib/array/Array#filter + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $3 - i32.const 0 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - i32.sub - local.tee $2 - i32.eqz - if + global.set $std/array/i global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - return - end - i32.const 0 - local.get $1 - i32.const 1 - i32.shl - local.get $4 - i32.eq - local.get $3 - select - if + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 7152 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 805 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $0 - select - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 806 i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable 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 + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 7184 + i32.store offset=8 + local.get $1 + i32.const 7184 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 813 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - if - local.get $2 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7216 + i32.store offset=8 + local.get $0 + i32.const 7216 + call $~lib/array/Array#filter + drop + global.get $std/array/i 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 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 828 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 829 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) + global.get $std/array/arr + local.tee $0 + i32.store 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 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7248 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0205 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select local.get $0 - i32.const 10000 - i32.ge_u + i32.gt_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7248 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0205 + end + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 839 i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - else + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store 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 + i32.const 7280 + i32.store offset=8 + i32.const 4 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0209 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + i32.gt_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7280 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0209 + end + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 843 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - return - end - local.get $5 - i32.eqz - if + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store + local.get $0 + i32.const 7312 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0213 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7312 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0213 + end + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 846 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load local.tee $0 + global.get $std/array/arr + local.tee $3 i32.store - local.get $1 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 9232 local.get $0 - select - return - end - loop $for-loop|0 + i32.const 7344 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0217 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.get $0 + i32.gt_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7344 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0217 + end + end local.get $1 - local.get $4 - i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl + i32.const 0 + i32.const 1552 + i32.const 849 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store + local.get $0 + i32.const 7376 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0221 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select local.get $0 - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 + i32.gt_s if - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl i32.add - local.set $3 + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7376 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0221 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end - end - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $5 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=8 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $5 - i32.lt_s + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl + i32.const 0 + i32.const 1552 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 858 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store + local.get $0 + i32.const 7408 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=12 + local.set $8 + loop $for-loop|0226 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select local.get $0 - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 + i32.gt_s if - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - local.get $7 - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 1 + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $7 i32.add - local.set $1 - end - local.get $3 - if + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - local.get $2 + local.get $9 + local.get $0 local.get $3 + i32.const 7408 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $3 i32.add - local.set $1 + local.set $0 + br $for-loop|0226 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $2 - if (result i32) - local.get $2 - i32.load offset=12 - else - i32.const 0 - end - local.get $1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=8 - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store - local.get $5 - if - local.get $2 - local.get $5 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7440 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 local.get $3 - i32.lt_s - if + i32.load offset=12 + local.set $8 + loop $for-loop|0230 + local.get $8 + local.get $3 + i32.load offset=12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select local.get $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $6 + i32.gt_s if - local.get $1 - local.get $5 - i32.add - local.get $6 + local.get $3 i32.load offset=4 - local.get $6 - i32.load offset=12 + local.get $0 i32.const 2 i32.shl - local.tee $6 - call $~lib/memory/memory.copy - local.get $1 - local.get $6 i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $3 + i32.const 7440 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0230 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#get:dataStart (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + local.get $1 + global.set $std/array/i + global.get $std/array/i i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 873 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 874 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 i32.store - block $__inlined_func$std/array/ArrayU32#constructor@varargs (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 44 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7472 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0234 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + i32.load offset=4 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select i32.const 2 i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - local.get $2 - if - local.get $0 - local.get $2 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + i32.add + i32.load + local.set $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 local.get $0 - local.get $2 - i32.store offset=4 + local.get $3 + i32.const 7472 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 local.get $0 - local.get $4 - i32.store offset=8 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0234 + end + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 884 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store + local.get $0 + i32.const 7504 + i32.store offset=8 + i32.const 4 + local.set $1 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0238 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + i32.load offset=4 local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.set $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 local.get $3 + i32.const 7504 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0238 + end + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 888 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store + local.get $0 + i32.const 7536 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0242 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.set $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $3 + i32.const 7536 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 local.get $0 - br $__inlined_func$std/array/ArrayU32#constructor@varargs + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0242 end - br $folding-inner1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#get:length (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#every (result i32) + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store local.get $0 + i32.const 7568 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0246 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.const 0 + i32.ge_s if - local.get $0 + local.get $3 i32.load offset=4 - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $4 - i32.const 3 + local.set $8 + i32.const 4 global.set $~argumentsLength - i32.const 0 - local.get $4 - local.get $2 - local.get $0 local.get $1 + local.get $8 + local.get $0 + local.get $3 + i32.const 7568 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $__inlined_func$~lib/array/Array#every - drop - local.get $2 + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $0 + br $for-loop|0246 end end - i32.const 1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#findIndex (result i32) + local.get $1 + if + i32.const 0 + i32.const 1552 + i32.const 894 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store local.get $0 + i32.const 7600 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0250 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.const 0 + i32.ge_s if - local.get $0 + local.get $3 i32.load offset=4 - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $4 - i32.const 3 + local.set $8 + i32.const 4 global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $2 - local.get $0 local.get $1 + local.get $8 + local.get $0 + local.get $3 + i32.const 7600 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex - drop - local.get $2 + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $0 + br $for-loop|0250 end end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 902 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 903 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $3 + i32.store local.get $0 + i32.const 7632 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 + local.set $0 + loop $for-loop|0255 + local.get $0 i32.const 0 i32.ge_s if - local.get $0 + local.get $3 i32.load offset=4 - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $3 - i32.const 3 + local.set $8 + i32.const 4 global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $2 - local.get $0 local.get $1 + local.get $8 + local.get $0 + local.get $3 + i32.const 7632 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex - drop - local.get $2 + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.ge_s - select - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + local.set $0 + br $for-loop|0255 end - i32.const 0 - local.set $2 end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.tee $4 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $6 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $6 - i32.add + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 905 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 0 + i32.store local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7664 + i32.store offset=8 i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $6 - local.get $2 - local.get $6 - i32.lt_s - select - end - local.set $0 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $6 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $6 + local.set $1 local.get $3 - local.get $6 - i32.lt_s - select - end - local.set $2 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.get $1 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + i32.load offset=12 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + i32.sub + local.set $0 + loop $for-loop|0259 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $3 + i32.const 7664 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $0 + br $for-loop|0259 end + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 918 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf (result i32) - i32.const -1 - local.get $2 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 i32.load offset=12 - local.tee $3 - i32.ge_s + if + i32.const 0 + i32.const 1552 + i32.const 919 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + i64.const -7046029254386353131 + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + local.tee $5 + local.get $5 + i64.eqz + select + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 + global.set $~lib/math/random_seeded + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 20 i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - i32.ge_s - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=20 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 80 + i32.store offset=4 + local.get $0 i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf (result i32) - i32.const -1 - local.get $2 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=24 + local.get $1 + i32.const 90 + i32.store + local.get $1 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 1 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=28 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=32 + local.get $1 + i32.const 80 + i32.store + local.get $1 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=36 + local.get $1 + i32.const 110 + i32.store + local.get $1 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=40 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=44 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 125 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=48 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=52 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=56 + local.get $1 + i32.const 75 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=60 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $1 + call $~lib/array/Array#__uset local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 20 i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=64 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=68 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 125 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=72 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=76 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=80 + local.get $1 + i32.const 75 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=84 + local.get $1 + i32.const 80 + i32.store + local.get $1 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=88 + local.get $1 + i32.const 90 + i32.store + local.get $1 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=92 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 80 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=96 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=100 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=104 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=108 + local.get $1 + i32.const 110 + i32.store + local.get $1 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $1 + call $~lib/array/Array#__uset + local.get $0 + global.set $std/array/outputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 10 + i32.const 7888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + local.get $0 + call $~lib/array/Array#sort@varargs + i32.const 3 + i32.const 2 + i32.const 10 + i32.const 7952 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1057 + i32.const 3 + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 10 + i32.const 7984 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + i32.const 0 + global.set $~argumentsLength local.get $0 - i32.load offset=12 - local.set $2 - end - block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) - i32.const -1 + call $~lib/array/Array#sort@varargs + i32.const 8 + i32.const 2 + i32.const 10 + i32.const 8048 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=12 - local.tee $3 + local.get $1 + call $std/array/isArraysEqual i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 + if + i32.const 0 + i32.const 1552 + i32.const 1061 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 11 + i32.const 8112 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=112 + i32.const 0 + global.set $~argumentsLength i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 i32.lt_s - select - local.set $2 - local.get $0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of154 + block $0of155 + block $outOfRange56 + global.get $~argumentsLength + br_table $0of155 $1of154 $outOfRange56 + end + unreachable + end + i32.const 8208 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8208 + i32.store + end + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + local.get $3 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + block $__inlined_func$std/array/isArraysEqual (result i32) + i32.const 8 + i32.const 3 + i32.const 11 + i32.const 8240 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $1 - local.get $2 - i32.const 2 - i32.shl + local.get $3 + i32.load offset=12 + local.tee $8 + local.get $1 + i32.load offset=12 + i32.ne + br_if $__inlined_func$std/array/isArraysEqual + drop + i32.const 1 + local.get $1 + local.get $3 + i32.eq + br_if $__inlined_func$std/array/isArraysEqual + drop + i32.const 0 + local.set $0 + loop $for-loop|028 local.get $0 - i32.add - i32.load - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $8 + i32.lt_s + if + local.get $3 + local.get $0 + call $~lib/array/Array#__get + local.tee $6 + local.get $6 + f64.ne + if (result i32) + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $6 + local.get $6 + f64.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + local.get $3 + local.get $0 + call $~lib/array/Array#__get + local.get $1 + local.get $0 + call $~lib/array/Array#__get + f64.ne + br_if $__inlined_func$std/array/isArraysEqual + drop + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|028 + end end + i32.const 1 end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1065 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 8336 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=116 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + i32.const 0 i32.store - local.get $2 + block $1of1308 + block $0of1309 + block $outOfRange310 + global.get $~argumentsLength + br_table $0of1309 $1of1308 $outOfRange310 + end + unreachable + end + i32.const 8384 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8384 + i32.store + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - i32.store offset=4 - local.get $2 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 8416 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1069 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 8464 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=120 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + block $1of1311 + block $0of1312 + block $outOfRange313 + global.get $~argumentsLength + br_table $0of1312 $1of1311 $outOfRange313 + end + unreachable + end + i32.const 8512 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8512 + i32.store + end + local.get $0 + i32.load offset=4 local.get $0 i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.const 0 local.get $1 - select - local.tee $4 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 8544 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1073 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 8592 + call $~lib/rt/__newArray local.tee $3 - i32.const 268435455 - i32.gt_u + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 8624 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 8656 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 8688 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 8736 + call $~lib/rt/__newArray + local.tee $11 + i32.store offset=140 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $12 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $13 + i32.store offset=148 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $14 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $0 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=160 + local.get $3 + call $std/array/assertSortedDefault + local.get $8 + call $std/array/assertSortedDefault + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 8816 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $8 + local.get $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1093 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $std/array/assertSortedDefault + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 8848 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $9 + local.get $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1096 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $10 + call $std/array/assertSortedDefault + local.get $10 + local.get $11 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1099 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + call $std/array/assertSortedDefault + local.get $12 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1102 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + call $std/array/assertSortedDefault + local.get $13 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if - i32.const 1056 - i32.const 1104 - i32.const 244 - i32.const 60 + i32.const 0 + i32.const 1552 + i32.const 1105 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer + local.get $14 + call $std/array/assertSortedDefault + local.get $14 + local.get $11 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1108 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + call $std/array/assertSortedDefault + local.get $0 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 0 + i32.const 1552 + i32.const 1111 i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.get $1 + call $std/array/assertSortedDefault + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 24 + memory.fill + local.get $0 + global.get $std/array/inputStabArr local.tee $3 + i32.store offset=8 local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i32.const 0 i32.store + i32.const 0 local.get $3 + i32.load offset=12 + local.tee $9 + local.get $9 + i32.const 0 + i32.gt_s + select + local.set $10 + local.get $8 + local.get $9 + local.get $10 + i32.sub + local.tee $8 + i32.const 0 + local.get $8 i32.const 0 + i32.gt_s + select + local.tee $8 i32.const 2 - i32.const 7 + i32.const 20 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $9 i32.store - local.get $0 - i32.load offset=12 + local.get $9 + i32.load offset=4 + local.set $11 + local.get $3 + i32.load offset=4 + local.get $10 + i32.const 2 + i32.shl + i32.add local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - local.get $2 - i32.gt_s + local.get $8 + i32.const 2 + i32.shl + local.set $8 + loop $while-continue|01 + local.get $1 + local.get $8 + i32.lt_u if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl + local.get $1 + local.get $11 i32.add - i32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - local.get $0 local.get $1 + local.get $3 + i32.add i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.tee $10 + i32.store + local.get $10 if - local.get $4 - local.get $5 - call $~lib/array/Array#push - drop + local.get $9 + local.get $10 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 - i32.const 1 + local.get $1 + i32.const 4 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|01 end end global.get $~lib/memory/__stack_pointer @@ -31530,445 +22840,521 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.load - local.get $1 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#some (result i32) - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#unshift (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#unshift - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + local.get $9 + i32.store global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=4 + local.get $9 + i32.load offset=4 + local.get $9 + i32.load offset=12 + i32.const 8880 + call $~lib/util/sort/SORT local.get $0 + local.get $9 + i32.store offset=12 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $1 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange + local.get $1 + i32.load offset=12 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $4 + i32.gt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $9 + local.get $4 + call $~lib/array/Array#__get + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + local.get $4 + call $~lib/array/Array#__get + local.tee $8 + i32.store offset=20 + local.get $3 + i32.load + local.get $8 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $3 + i32.load offset=4 + local.get $8 + i32.load offset=4 + i32.ne end - unreachable + if + i32.const 0 + local.set $0 + br $for-break0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|02 end - i32.const 0 - local.set $1 end - i32.const 2147483647 - local.set $2 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1042 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $0 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8944 + i32.store offset=8 + local.get $0 + i32.const 8944 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8976 + i32.store offset=8 + local.get $1 + i32.const 8976 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 9008 + i32.store offset=8 + local.get $1 + i32.const 9008 + call $std/array/assertSorted + 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 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 16 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 i32.const 0 i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $1 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + local.get $4 + if local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + local.get $4 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.set $1 + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + i32.const 32 + i32.store offset=8 + local.get $3 + i32.const 2 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.store i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 + local.set $0 + loop $for-loop|0315 + local.get $0 + i32.const 2 i32.lt_s - select + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + local.get $0 + i32.sub + call $~lib/array/Array#__set + local.get $3 + local.get $0 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0315 + end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store offset=8 + local.get $3 + i32.const 9040 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 + i32.const 8 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 i32.const 0 - local.get $2 + i32.store + local.get $4 i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 7 + i32.store offset=4 + local.get $4 i32.const 0 - call $~lib/rt/__newArray - local.tee $3 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $4 + local.get $8 i32.store - local.get $3 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.get $8 + if + local.get $4 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $8 + i32.store offset=4 + local.get $4 + i32.const 2048 + i32.store offset=8 + local.get $4 + i32.const 512 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.store + loop $for-loop|03 + local.get $3 + i32.const 512 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 511 + local.get $3 + i32.sub + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $4 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|03 + end + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 9072 + i32.store offset=8 + local.get $4 + i32.const 9072 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 31 + i32.const 9264 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 31 + i32.const 9312 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=152 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange + block $1of160 + block $0of161 + block $outOfRange62 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + br_table $0of161 $1of160 $outOfRange62 end unreachable end - i32.const 2147483647 - local.set $2 + i32.const 9360 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 9360 + i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 i32.const 0 i32.store - local.get $3 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 + block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $3 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + local.set $1 + local.get $0 + i32.load offset=12 + local.set $8 + loop $for-loop|063 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $10 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/string/String|null> + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|063 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + global.set $~lib/memory/__stack_pointer + i32.const 1 end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $5 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $5 - i32.add - local.tee $4 - i32.ne + i32.eqz if - local.get $6 - local.get $4 - i32.const 2 - i32.shl - local.get $2 - i32.add - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + i32.const 0 + i32.const 1552 + i32.const 1046 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 - local.get $5 - i32.sub - i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -31977,2592 +23363,2731 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.gt_u - if - i32.const 0 - local.set $0 - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (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 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.get $3 - i32.lt_u + i32.load offset=12 + local.tee $1 + local.get $4 + i32.load offset=12 + i32.ne if - local.get $0 - i32.const 2 - i32.shl - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $6 - i32.load - local.set $4 - local.get $6 - local.get $5 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + end + local.get $0 + local.get $4 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $4 - i32.store - local.get $0 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $0 - br $while-continue|0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array#sort@varargs - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.const 0 + local.set $3 + loop $for-loop|045 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $4 + local.get $3 + call $~lib/array/Array#__get + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $8 + local.get $9 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|045 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + call $std/array/createRandomStringArray + local.tee $1 + i32.store offset=156 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange + block $1of148 + block $0of149 + block $outOfRange50 global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + i32.const 1 + i32.sub + br_table $0of149 $1of148 $outOfRange50 end unreachable end - i32.const 9520 - local.set $1 + i32.const 9392 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9520 + i32.const 9392 i32.store end - local.get $0 local.get $1 - call $~lib/array/Array#join + local.get $0 + call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.const 0 + i32.const 35 + i32.const 9424 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + local.get $0 + i32.store offset=164 + global.get $~lib/memory/__stack_pointer + i32.const 9520 + i32.store offset=168 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#flat (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 15152 - i32.const 1104 - i32.const 469 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - block $__inlined_func$std/array/ArrayU8#constructor@varargs (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + block $__inlined_func$~lib/util/string/joinBooleanArray + local.get $0 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 45 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + local.tee $4 + i32.const 0 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 8 - i32.sub + i32.const 4 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinBooleanArray + end + local.get $4 + i32.eqz + if + i32.const 9456 + i32.const 9488 + local.get $3 + i32.load8_u select - local.tee $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinBooleanArray + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 5 + i32.add + i32.mul + i32.const 5 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|164 local.get $2 + local.get $4 + i32.lt_s if + local.get $2 + local.get $3 + i32.add + i32.load8_u + local.tee $10 + i32.eqz + i32.const 4 + i32.add + local.set $11 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9456 + i32.const 9488 + local.get $10 + select + local.get $11 + i32.const 1 + i32.shl + memory.copy local.get $0 + local.get $11 + i32.add + local.set $0 + local.get $8 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9520 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end local.get $2 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $2 + br $for-loop|164 end - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 + end + local.get $3 + local.get $4 + i32.add + i32.load8_u + local.tee $2 + i32.eqz + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9456 + i32.const 9488 + local.get $2 + select + local.get $3 + i32.const 1 + i32.shl + memory.copy + local.get $9 + local.get $0 + local.get $3 + i32.add + local.tee $0 + i32.gt_s + if local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 local.get $0 - i32.store + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - br $__inlined_func$std/array/ArrayU8#constructor@varargs + br $__inlined_func$~lib/util/string/joinBooleanArray end - br $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#every (result i32) + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 9552 + i32.store offset=8 + local.get $0 + i32.const 9552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 9600 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 9232 + i32.store offset=168 + local.get $0 + i32.const 9232 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11408 + i32.store offset=8 + local.get $0 + i32.const 11408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 11440 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 11472 + i32.store offset=168 + local.get $0 + i32.const 11472 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11408 + i32.store offset=8 + local.get $0 + i32.const 11408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 11504 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 11536 + i32.store offset=168 + local.get $0 + i32.const 11536 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $__inlined_func$~lib/array/Array#every - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + local.get $0 + i32.const 11568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1162 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#findIndex (result i32) + i32.const 6 + i32.const 3 + i32.const 11 + i32.const 11648 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 11728 + i32.store offset=168 + local.get $0 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12896 + i32.store offset=8 + local.get $0 + i32.const 12896 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 13040 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 9232 + i32.store offset=168 + local.get $0 + i32.load offset=4 local.get $0 i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 9232 + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13008 + i32.store offset=8 + local.get $0 + i32.const 13008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1164 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3 + i32.const 2 + i32.const 12 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=152 + local.get $1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + i32.const 0 + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + i32.const 9520 + i32.store offset=168 + local.get $1 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13136 + i32.store offset=8 local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 + i32.const 13136 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + i32.const 1552 + i32.const 1166 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.ge_s - select - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=160 + local.get $1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + i32.const 9520 + i32.store offset=168 + local.get $1 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13232 + i32.store offset=8 + local.get $0 + i32.const 13232 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - local.set $2 + i32.const 1552 + i32.const 1169 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 13328 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end + i32.const 2 + i32.const 3 + i32.const 13360 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 13392 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=148 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 13424 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=144 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9232 + i32.store offset=8 + local.get $0 + i32.const 9232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 13008 + i32.store offset=8 + local.get $0 + i32.const 13008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1180 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf (result i32) - i32.const -1 local.get $2 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 0 - i32.lt_s + i32.store + local.get $1 + i32.const 13472 + i32.store offset=8 + local.get $0 + i32.const 13472 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $3 - i32.add - local.tee $2 i32.const 0 - local.get $2 + i32.const 1552 + i32.const 1181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 13504 + i32.store offset=8 + local.get $0 + i32.const 13504 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.gt_s - select - local.set $2 + i32.const 1552 + i32.const 1182 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 3 + i32.const 0 + i32.const 36 + i32.const 13552 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 9520 + i32.store + i32.const 0 + local.set $2 local.get $0 i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 i32.lt_s if - local.get $2 - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - i32.ge_s - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + local.get $4 + i32.eqz + if + local.get $3 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end - unreachable - end - i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf (result i32) - i32.const -1 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|065 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $2 + local.get $3 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9520 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|065 + end + end + local.get $9 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add local.get $3 + local.get $4 i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s if - local.get $2 - local.get $0 - local.get $2 - i32.add - i32.load8_u local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - drop - local.get $2 - i32.const 1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.set $2 - end - block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) - i32.const -1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13584 + i32.store offset=8 local.get $0 - i32.load offset=12 - local.tee $3 + i32.const 13584 + call $~lib/string/String.__eq i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf - drop - local.get $2 - local.get $3 - i32.add - local.get $3 + if + i32.const 0 + i32.const 1552 + i32.const 1184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 i32.const 1 + i32.const 9 + i32.const 13616 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 + local.get $1 + i32.const 4 i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 i32.lt_s - select + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 9520 + i32.store + i32.const 0 local.set $2 local.get $0 i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 local.set $0 - loop $while-continue|0 - local.get $2 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $4 i32.const 0 - i32.ge_s + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $4 + i32.eqz + if + local.get $3 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|066 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $2 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9520 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|066 + end + end + local.get $9 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $4 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s if - local.get $2 + local.get $1 local.get $0 - local.get $2 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $2 local.get $0 i32.store - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 13648 + i32.store offset=8 + local.get $0 + i32.const 13648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1185 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 37 + i32.const 13696 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 local.get $1 - i32.store offset=4 - local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 i32.store + local.get $1 + i32.const 9520 + i32.store local.get $0 - i32.load offset=12 - local.tee $2 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13744 + i32.store offset=8 + local.get $0 + i32.const 13744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 3 + i32.const 38 + i32.const 13824 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=164 local.get $1 - i32.load offset=12 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 + i32.store local.get $1 - select - local.tee $4 + i32.const 9520 + i32.store + local.get $0 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.const 1073741820 - i32.gt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13888 + i32.store offset=8 + local.get $0 + i32.const 13888 + call $~lib/string/String.__eq + i32.eqz if - i32.const 1056 - i32.const 1104 - i32.const 244 - i32.const 60 + i32.const 0 + i32.const 1552 + i32.const 1187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 31 + i32.const 14000 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=140 + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14048 + i32.store offset=8 + local.get $0 + i32.const 14048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 31 + i32.const 14160 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=164 + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14208 + i32.store offset=8 + local.get $0 + i32.const 14208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1192 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 0 - i32.const 6 + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 + local.tee $1 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load offset=4 - local.tee $5 + i32.store offset=160 + local.get $1 + i32.const 0 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 14240 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 14272 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset local.get $0 - i32.load offset=4 - local.get $2 - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add local.get $1 - i32.load offset=4 - local.get $4 - call $~lib/memory/memory.copy + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $3 - end - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.add - local.get $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store local.get $0 + i32.const 9520 + i32.store + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 + local.set $1 + local.get $0 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 i32.lt_s - select - local.get $2 - i32.gt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + call $~lib/array/Array#toString + else + i32.const 9232 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + i32.const 9232 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9232 + i32.store offset=4 + i32.const 9516 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|067 + local.get $1 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $0 + local.get $8 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9520 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|067 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.get $3 i32.add - local.set $2 - br $for-loop|0 + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $0 i32.store - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 14304 + i32.store offset=8 + local.get $0 + i32.const 14304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - local.get $3 + i32.load offset=4 + i32.store offset=132 + local.get $1 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 14352 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 14384 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 9520 + i32.store + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=12 + local.set $1 + local.get $0 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store + local.tee $0 + i64.const 0 + i64.store local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 i32.lt_s - select - local.get $2 - i32.gt_s if - local.get $2 - local.get $0 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_u - local.set $5 - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store local.get $0 + if (result i32) + local.get $0 + call $~lib/array/Array#toString + else + i32.const 9232 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + i32.const 9232 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9232 + i32.store offset=4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|068 local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $2 + i32.gt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $0 + local.get $8 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end local.get $4 - local.get $5 - call $~lib/array/Array#push - drop + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9520 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|068 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.load8_u - local.get $1 - local.get $1 - i32.const 1 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array#some (result i32) - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14304 + i32.store offset=8 + local.get $0 + i32.const 14304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1198 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1 + i32.const 2 + i32.const 41 i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#unshift (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer i32.const 1 + i32.const 2 + i32.const 40 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + i32.store offset=120 + local.get $2 + i32.const 0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 1 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.const 2 + i32.const 7 + i32.const 14416 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 0 + local.get $2 + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=128 global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store local.get $0 + i32.const 9520 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=12 + local.set $1 + local.get $0 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 9232 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + end + i32.const 9232 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9232 + i32.store offset=4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|069 + local.get $1 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + 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=8 + local.get $0 + local.get $8 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 end - unreachable + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9520 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|069 end - i32.const 0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array<~lib/array/Array>#toString local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 end - i32.const 2147483647 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13008 + i32.store offset=8 local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + i32.const 13008 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + i32.const 1552 + i32.const 1201 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.tee $0 + i32.const 4 + i32.const 2 + i32.const 26 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=132 local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - i32.const 6 i32.const 0 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 14448 call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14480 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14512 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset local.get $1 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14544 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset local.get $0 - i32.load offset=4 - i32.add - local.get $2 - call $~lib/memory/memory.copy + local.get $1 + i32.store offset=132 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $1 + i32.store offset=128 + local.get $1 + i32.load offset=12 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1208 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|7 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1210 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|7 + end + end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + i32.const 2 + i32.const 42 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=160 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=140 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 31 + i32.const 14608 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 14704 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 31 + i32.const 14832 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 31 + i32.const 14896 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end + local.get $1 + i32.store offset=140 global.get $~lib/memory/__stack_pointer - i32.const 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 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 + i64.const 0 + i64.store + local.get $1 + i32.load offset=4 + local.set $8 local.get $1 + i32.load offset=12 + local.set $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0319 + local.get $0 local.get $1 - local.get $3 i32.lt_s - select + if + local.get $0 + i32.const 2 + i32.shl + local.get $8 + i32.add + i32.load + local.tee $2 + if (result i32) + local.get $2 + i32.load offset=12 + else + i32.const 0 + end + local.get $3 + i32.add + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0319 + end end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 0 - i32.const 6 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + local.tee $0 i32.const 0 - call $~lib/rt/__newArray - local.tee $1 + call $~lib/rt/itcms/__new + local.tee $9 i32.store - local.get $1 - i32.load offset=4 - local.get $4 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.add - local.tee $6 - local.get $5 - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $5 - i32.add - local.tee $4 - i32.ne - if - local.get $6 - local.get $2 - local.get $4 - i32.add - local.get $3 - local.get $4 - i32.sub - call $~lib/memory/memory.copy - end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + local.get $10 local.get $3 - local.get $5 - i32.sub i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#reverse (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/bytes/REVERSE - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 + local.get $10 local.get $0 - i32.store - local.get $2 - local.get $1 + i32.store offset=8 + local.get $10 + local.get $9 i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $10 + local.get $9 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + local.get $9 + if + local.get $10 + local.get $9 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 0 + local.set $2 + i32.const 0 + local.set $0 + loop $for-loop|1322 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $8 + i32.add + i32.load + local.tee $11 + if + local.get $2 + local.get $9 + i32.add + local.get $11 + i32.load offset=4 + local.get $11 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $11 + memory.copy + local.get $2 + local.get $11 + i32.add + local.set $2 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1322 + end + end + i32.const 0 + local.set $0 + loop $for-loop|2325 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $9 + i32.add + i32.load + local.tee $1 + if + local.get $9 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2325 end - i32.const 15216 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 15216 - i32.store end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + local.get $10 + i32.store offset=160 global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 31 + i32.const 14928 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=148 + local.get $10 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + local.set $0 + loop $for-loop|8 + local.get $1 + i32.load offset=12 + local.get $0 + i32.gt_s + if + local.get $10 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1218 + i32.const 5 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|8 end - i32.const 9520 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 9520 - i32.store end - local.get $0 - local.get $1 - call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 26 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=144 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 + local.get $1 + i32.load offset=4 + i32.store offset=156 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 14992 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 15024 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=156 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + local.get $0 + i32.load offset=12 + if i32.const 0 - local.set $1 + i32.const 1552 + i32.const 1222 + i32.const 3 + 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 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 26 i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 46 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=144 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=152 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 15056 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 15088 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $0 - i32.store + i32.store offset=152 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add + i32.const 15120 + i32.store offset=164 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array<~lib/string/String>#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (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 15652 + i32.const 15492 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 - i32.store - local.get $3 local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) + i32.load offset=12 + local.tee $3 + i32.const 2 + i32.const 26 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $for-loop|061 local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $3 + local.get $9 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + select local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.tee $9 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.const 2 + i32.shl + local.tee $10 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $11 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $11 + local.get $0 + local.get $1 + i32.const 15120 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + local.tee $9 + i32.store offset=8 + local.get $8 + local.get $10 + i32.add + local.get $9 + i32.store + local.get $9 if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - i32.const 3 - global.set $~argumentsLength local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$~lib/array/Array<~lib/string/String>#every - end - local.get $2 + local.get $9 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|061 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array<~lib/string/String>#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 + local.get $4 i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $0 + i32.store offset=144 + local.get $0 + i32.load offset=12 i32.const 4 - i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1232 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + i32.const 31876 global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s + i32.gt_s + if + loop $while-continue|0332 + global.get $~lib/rt/itcms/state if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/rt/itcms/step + drop + br $while-continue|0332 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 return end - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + local.get $0 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + i32.store + local.get $3 + if local.get $2 - return + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $export:~lib/array/Array<~lib/string/String>#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/array/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.ge_s - select - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 147 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 5952 - i32.const 1104 - i32.const 151 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 ) - (func $export:~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) 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 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34570,1619 +26095,1617 @@ end global.get $~lib/memory/__stack_pointer local.tee $4 - local.get $0 + i32.const 0 i32.store - local.get $4 - local.get $1 - i32.store offset=4 - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - i32.load offset=4 - local.set $5 local.get $0 - i32.load offset=12 - local.set $4 - local.get $2 + local.get $1 + i32.shl + local.tee $5 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.set $2 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 + if + local.get $1 local.get $3 - local.get $4 - i32.lt_s - select + local.get $5 + memory.copy end - local.set $3 - loop $for-loop|0 + local.get $4 + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $1 + if local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.get $1 - i32.store - local.get $1 - if - local.get $0 - local.get $1 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $export:~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.load offset=12 + local.tee $2 + i32.add + local.tee $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 244 + i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 + local.get $4 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 i32.store + local.get $4 + i32.load offset=4 + local.tee $5 + local.get $0 + i32.load offset=4 local.get $3 - local.get $1 - i32.store offset=4 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end + i32.const 2 + i32.shl + local.tee $0 + memory.copy local.get $0 + local.get $5 + i32.add local.get $1 + i32.load offset=4 local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - i32.const 0 - i32.ge_s + i32.const 2 + i32.shl + 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 $export:~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) 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 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 + i32.const 0 i32.store - local.get $3 + local.get $0 + i32.load offset=12 + local.set $3 local.get $1 - i32.store offset=4 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 i32.const 0 - local.set $2 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf + i32.const 2 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - local.get $0 - i32.load offset=12 - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $3 + i32.const 0 i32.store + local.get $3 local.get $2 - local.get $1 - i32.store offset=4 local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store local.get $1 - call $~lib/array/Array<~lib/string/String>#push + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $5 + i32.const 2 + i32.shl + memory.copy + local.get $3 + local.get $4 + local.get $5 + i32.add + local.tee $4 + i32.ne + if + local.get $6 + local.get $4 + i32.const 2 + i32.shl + local.get $2 + i32.add + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $0 + local.get $3 + local.get $5 + i32.sub + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $export:~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - i32.store offset=4 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 local.get $1 - i32.load offset=12 i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 local.get $1 + local.get $4 + i32.lt_s select - local.tee $4 - i32.add - local.tee $5 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 244 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 2 - i32.const 33 - i32.const 0 - call $~lib/rt/__newArray - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - local.set $5 - local.get $3 - i32.const 2 - i32.shl - local.set $7 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $7 - i32.lt_u - if - local.get $0 - local.get $5 - i32.add - local.get $0 - local.get $3 - i32.add - i32.load - local.tee $8 - i32.store - local.get $8 - if - local.get $6 - local.get $8 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|0 - end - end + end + local.tee $5 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $2 + local.get $3 + i32.const 2 + i32.shl + memory.copy + local.get $4 + local.get $3 + local.get $5 + i32.add + local.tee $5 + i32.ne + if + local.get $2 local.get $5 - local.get $7 - i32.add - local.set $0 + i32.const 2 + i32.shl local.get $1 - i32.load offset=4 - local.set $1 + i32.add local.get $4 + local.get $5 + i32.sub i32.const 2 i32.shl - local.set $3 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - if - local.get $6 - local.get $4 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + memory.copy end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $4 + local.get $3 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $export:~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 5952 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2176 - i32.const 1104 - i32.const 291 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.load offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $2 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $export:~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) + (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $4 + loop $for-loop|0 local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + local.get $2 + i32.gt_s + if + local.get $2 + i32.const 2 + i32.shl + local.tee $5 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 + i32.load offset=4 + i32.add + i32.load + local.set $6 + i32.const 3 + global.set $~argumentsLength local.get $4 - i32.lt_s - select + local.get $5 + i32.add + local.get $6 local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $export:~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 local.get $3 - i32.const 0 - i32.const 2 - i32.const 33 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + local.get $2 + i32.gt_s + if local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + i32.const 3 + global.set $~argumentsLength local.get $5 - i32.lt_s - select local.get $2 - i32.gt_s + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength + local.get $4 local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $3 - local.get $5 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/array/Array#push + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $std/array/Dim#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#sort@varargs (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 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 7920 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + i32.const 7920 + i32.store end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $export:~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 - i32.store local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - i32.le_s + i32.gt_s if - i32.const 2176 - i32.const 1104 - i32.const 350 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.load - local.tee $3 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $export:~lib/array/Array<~lib/string/String>#some (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createRandomOrderedArray (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.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 - i32.store - local.get $3 local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - br $__inlined_func$~lib/array/Array<~lib/string/String>#some - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.gt_s + if + local.get $2 + local.get $1 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + local.set $1 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $export:~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + i32.const 0 i32.store - local.get $2 + i32.const 0 local.get $1 - i32.store offset=4 - local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select local.tee $2 - i32.const 4 - i32.add local.get $2 - local.get $3 + i32.const 0 + i32.gt_s + select i32.const 1 - i32.sub - i32.const 2 i32.shl - call $~lib/memory/memory.copy + local.set $3 + i32.const 0 local.get $2 - local.get $1 - i32.store - local.get $1 - if - local.get $0 - local.get $1 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 local.get $3 - ) - (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const 2147483647 - local.set $2 - end + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 33 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.shl - local.set $1 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $3 - local.get $5 - i32.add - local.get $0 - local.get $3 - i32.add - i32.load - local.tee $2 - i32.store - local.get $2 - if - local.get $4 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $while-continue|0 - end - end + global.set $~lib/memory/__stack_pointer + i32.const 9232 + return + end + i32.const 0 + local.get $1 + i32.const 1 + i32.shl + local.get $4 + i32.eq + local.get $3 + select + if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + 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 - local.get $4 + i32.const 9824 return end - i32.const 32064 - i32.const 32112 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $0 + select + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $0 + i32.add + local.tee $1 i32.const 1 + i32.shl i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $export:~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + 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.sub + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - local.get $2 + i32.const 9824 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s + i32.const 100 + i32.lt_u if (result i32) - local.get $1 - local.get $3 + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 33 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 + else local.get $0 - i32.load offset=4 - local.tee $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $5 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $5 - i32.add - local.tee $4 - i32.ne - if - local.get $6 - local.get $4 - i32.const 2 - i32.shl - local.get $2 + 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 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy end - local.get $0 - local.get $3 - local.get $5 - i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return end - i32.const 32064 - i32.const 32112 + local.tee $2 i32.const 1 + i32.shl i32.const 1 - call $~lib/builtins/abort - unreachable + 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 $export:~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15492 + i32.lt_s + if + i32.const 31904 + i32.const 31952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + return + end + local.get $5 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 local.get $0 + i32.load + local.tee $0 i32.store + local.get $1 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.tee $1 - i32.load offset=4 - local.set $2 + i32.const 9232 local.get $0 - i32.load offset=12 - local.set $4 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + select + return + end + loop $for-loop|0 + local.get $1 local.get $4 - i32.const 1 - i32.gt_u + i32.gt_s if - i32.const 0 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - i32.shr_u - local.set $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $3 + i32.add + local.set $3 + end local.get $4 i32.const 1 - i32.sub + i32.add local.set $4 - loop $while-continue|0 - local.get $0 - local.get $5 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.get $2 - i32.add - local.tee $6 - i32.load - local.tee $3 - i32.store - local.get $6 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $2 - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $3 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + local.get $5 + local.get $2 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $5 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $1 + i32.const 1 + i32.shl + local.get $6 + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $7 + i32.add + local.set $1 end - i32.const 15248 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 15248 - i32.store + local.get $3 + if + local.get $1 + i32.const 1 + i32.shl + local.get $6 + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store - local.get $2 + local.get $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if local.get $1 - i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 9520 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 9520 - i32.store - end + i32.const 1 + i32.shl + local.get $6 + i32.add local.get $0 - i32.load offset=4 local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + memory.copy end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $export:~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) 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 15652 + i32.const 15492 i32.lt_s if - i32.const 32064 - i32.const 32112 + i32.const 31904 + i32.const 31952 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.set $2 local.get $0 + i32.load offset=12 + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.tee $4 + if (result i32) + local.get $4 + i32.load offset=12 + else + i32.const 0 + end + local.get $1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.tee $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $1 + i32.store offset=12 + local.get $4 local.get $0 - call $~lib/array/Array<~lib/string/String|null>#toString + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store + local.get $5 + if + local.get $4 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.tee $6 + if + local.get $1 + local.get $5 + i32.add + local.get $6 + i32.load offset=4 + local.get $6 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $6 + memory.copy + local.get $1 + local.get $6 + i32.add + local.set $1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index c91e6de905..a67c32909b 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -20,7 +20,7 @@ function isArraysEqual(a: Array, b: Array, len: i32 = 0): bool { if (!len) { len = a.length; if (len != b.length) return false; - if (a === b) return true; + if (a == b) return true; } for (let i = 0; i < len; i++) { if (isFloat()) { @@ -525,7 +525,7 @@ var i: i32; assert(spliced2[0]!.v == 1); assert(refArr2.length == 2); - assert(refArr2[0] === null); + assert(refArr2[0] == null); assert(refArr2[1]!.v == 2); } @@ -1236,14 +1236,6 @@ function assertSortedDefault(arr: Array): void { assert(mapResult[3] == 3); } -// export extended arrays - -export class ArrayU32 extends Array {} -export class ArrayU8 extends Array {} -export class ArrayStr extends Array {} -// FIXME: Fails on 'sort' due to operators '>', '<' -// export class ArrayArrayI32 extends Array> {} - // Unleak globals arr = changetype>(0); inputStabArr = changetype>(0); diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.debug.wat similarity index 73% rename from tests/compiler/std/arraybuffer.untouched.wat rename to tests/compiler/std/arraybuffer.debug.wat index 48fd5021e3..5a45fe2848 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.debug.wat @@ -2,10 +2,10 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -23,9 +23,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 820)) @@ -2070,237 +2069,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2350,7 +2118,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) @@ -2359,1262 +2127,9 @@ i32.sub i32.load offset=16 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> (param $0 i32) (result i32) - i32.const 1 - drop + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> (param $0 i32) (result i32) + i32.const 1 + drop local.get $0 i32.const 0 i32.eq @@ -3854,7 +2369,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) @@ -4271,14 +2786,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill memory.size i32.const 16 i32.shl @@ -4793,7 +3303,7 @@ local.get $1 i32.add local.get $6 - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $8 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.release.wat similarity index 69% rename from tests/compiler/std/arraybuffer.optimized.wat rename to tests/compiler/std/arraybuffer.release.wat index 13d74b7958..fbf97f2cbe 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1272,7 +1272,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1287,7 +1287,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1300,7 +1300,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1308,7 +1308,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1319,16 +1319,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1339,16 +1339,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1356,7 +1356,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1364,8 +1364,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1382,7 +1382,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1392,13 +1392,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1411,40 +1411,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1504,1221 +1504,172 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $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-inner1 $invalid + end + return + end + return + end + unreachable + end local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:std/arraybuffer + ) + (func $start:std/arraybuffer + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.store8 - local.get $3 - i32.const 3 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 18228 i32.sub - i32.const 0 - i32.store8 + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 i32.const 4 i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub + i32.const 8 i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 0 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 + local.get $0 + i32.const 20 i32.sub - i32.const 0 - i32.store - local.get $3 + i32.load offset=16 i32.const 8 - i32.sub - i32.const 0 - i32.store + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $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-inner1 $invalid - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:std/arraybuffer - ) - (func $start:std/arraybuffer - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1844 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - memory.size - i32.const 16 - i32.shl - i32.const 18228 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 - i32.store - i32.const 1320 - i32.const 1312 - i32.store - i32.const 1312 - global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 - i32.store - i32.const 1464 - i32.const 1456 - i32.store - i32.const 1456 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1844 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.const 1073741820 @@ -2875,7 +1826,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2884,26 +1834,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2914,7 +1865,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store i32.const 8 @@ -2922,30 +1873,30 @@ call $~lib/rt/itcms/__new local.tee $2 i32.const 1632 - i32.const 8 - call $~lib/memory/memory.copy - local.get $1 + i64.load align=1 + i64.store align=1 + local.get $0 local.get $2 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 local.get $2 i32.store local.get $2 if - local.get $1 + local.get $0 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $0 local.get $2 i32.store offset=4 - local.get $1 + local.get $0 i32.const 8 i32.store offset=8 - local.get $1 + local.get $0 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -2953,7 +1904,7 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2964,30 +1915,30 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load local.tee $0 i32.store offset=16 @@ -3198,7 +2149,7 @@ local.get $1 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3260,25 +2211,25 @@ i32.const 1 local.get $1 i32.shl - local.tee $1 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 if local.get $0 - local.get $2 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $2 + local.get $1 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 diff --git a/tests/compiler/std/arraybuffer.ts b/tests/compiler/std/arraybuffer.ts index 57bdb29dc4..5ed1691742 100644 --- a/tests/compiler/std/arraybuffer.ts +++ b/tests/compiler/std/arraybuffer.ts @@ -6,7 +6,7 @@ let sliced = buffer.slice(); assert(sliced.byteLength == 8); - assert(sliced !== buffer); + assert(sliced != buffer); sliced = buffer.slice(1); diff --git a/tests/compiler/std/console.debug.wat b/tests/compiler/std/console.debug.wat new file mode 100644 index 0000000000..8f86dfe207 --- /dev/null +++ b/tests/compiler/std/console.debug.wat @@ -0,0 +1,254 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) + (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 588)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16972)) + (global $~lib/memory/__heap_base i32 (i32.const 16972)) + (memory $0 1) + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s\00") + (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00p\00h\00e\00w\00\00\00\00\00") + (data (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g\00\00\00\00\00\00\00") + (data (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o\00\00\00\00\00\00\00\00\00") + (data (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n\00\00\00\00\00\00\00\00\00") + (data (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r\00\00\00\00\00\00\00") + (data (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l\00\00\00\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l\00") + (data (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.eqz + i32.eqz + local.get $1 + call $~lib/bindings/dom/console.assert + ) + (func $~lib/console/console.log (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.log + ) + (func $~lib/console/console.debug (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.debug + ) + (func $~lib/console/console.info (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.info + ) + (func $~lib/console/console.warn (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.warn + ) + (func $~lib/console/console.error (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.error + ) + (func $~lib/console/console.time (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.time + ) + (func $~lib/console/console.timeLog (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.timeLog + ) + (func $~lib/console/console.timeEnd (param $0 i32) + i32.const 0 + drop + local.get $0 + call $~lib/bindings/dom/console.timeEnd + ) + (func $~start + call $start:std/console + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16992 + i32.const 17040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:std/console + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.assert + i32.const 1 + i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.assert + i32.const 96 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.log + i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.debug + i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.info + i32.const 240 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.warn + i32.const 288 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.error + i32.const 336 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.time + i32.const 336 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.timeLog + i32.const 336 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.timeEnd + i32.const 384 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.timeLog + i32.const 384 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.timeEnd + i32.const 432 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.time + i32.const 432 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.time + i32.const 480 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.log + i32.const 512 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.log + i32.const 544 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.log + i32.const 576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/features/simd.json b/tests/compiler/std/console.json similarity index 61% rename from tests/compiler/features/simd.json rename to tests/compiler/std/console.json index cd4e868be3..23ec5535fe 100644 --- a/tests/compiler/features/simd.json +++ b/tests/compiler/std/console.json @@ -1,7 +1,4 @@ { - "features": [ - "simd" - ], "asc_flags": [ ], "skipInstantiate": true diff --git a/tests/compiler/std/console.release.wat b/tests/compiler/std/console.release.wat new file mode 100644 index 0000000000..1e444eb7dc --- /dev/null +++ b/tests/compiler/std/console.release.wat @@ -0,0 +1,166 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) + (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17996)) + (memory $0 1) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\08\00\00\00p\00h\00e\00w") + (data (i32.const 1100) ",") + (data (i32.const 1112) "\01\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g") + (data (i32.const 1148) ",") + (data (i32.const 1160) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g") + (data (i32.const 1196) ",") + (data (i32.const 1208) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o") + (data (i32.const 1244) ",") + (data (i32.const 1256) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n") + (data (i32.const 1292) ",") + (data (i32.const 1304) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r") + (data (i32.const 1340) ",") + (data (i32.const 1352) "\01\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l") + (data (i32.const 1388) ",") + (data (i32.const 1400) "\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") + (data (i32.const 1436) ",") + (data (i32.const 1448) "\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") + (data (i32.const 1484) "\1c") + (data (i32.const 1496) "\01\00\00\00\02\00\00\001") + (data (i32.const 1516) "\1c") + (data (i32.const 1528) "\01\00\00\00\04\00\00\001\002") + (data (i32.const 1548) "\1c") + (data (i32.const 1560) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1580) "\1c") + (data (i32.const 1592) "\01\00\00\00\08\00\00\001\002\003\004") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (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 1612 + i32.lt_s + if + i32.const 18016 + i32.const 18064 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + i32.const 0 + i32.const 1056 + call $~lib/bindings/dom/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1 + i32.const 1088 + call $~lib/bindings/dom/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store offset=4 + i32.const 1120 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 + i32.const 1168 + call $~lib/bindings/dom/console.debug + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=4 + i32.const 1216 + call $~lib/bindings/dom/console.info + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + call $~lib/bindings/dom/console.warn + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store offset=4 + i32.const 1312 + call $~lib/bindings/dom/console.error + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store offset=4 + i32.const 1360 + call $~lib/bindings/dom/console.time + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store offset=4 + i32.const 1360 + call $~lib/bindings/dom/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store offset=4 + i32.const 1360 + call $~lib/bindings/dom/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 1408 + i32.store offset=4 + i32.const 1408 + call $~lib/bindings/dom/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 1408 + i32.store offset=4 + i32.const 1408 + call $~lib/bindings/dom/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store offset=4 + i32.const 1456 + call $~lib/bindings/dom/console.time + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store offset=4 + i32.const 1456 + call $~lib/bindings/dom/console.time + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.store offset=4 + i32.const 1504 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store offset=4 + i32.const 1536 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.store offset=4 + i32.const 1568 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 1600 + i32.store offset=4 + i32.const 1600 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/console.ts b/tests/compiler/std/console.ts new file mode 100644 index 0000000000..5fb2e20514 --- /dev/null +++ b/tests/compiler/std/console.ts @@ -0,0 +1,25 @@ +// asserts +console.assert(false, "whoops"); +console.assert(true, "phew"); + +// prefixes +console.log("hello log"); +console.debug("hello debug"); +console.info("hello info"); +console.warn("hello warn"); +console.error("hello error"); + +// timers +console.time("someLabel"); +console.timeLog("someLabel"); +console.timeEnd("someLabel"); +console.timeLog("wrongLabel"); +console.timeEnd("wrongLabel"); +console.time("duplicateLabel"); +console.time("duplicateLabel"); + +// fast writes +console.log("1"); +console.log("12"); +console.log("123"); +console.log("1234"); diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.debug.wat similarity index 95% rename from tests/compiler/std/dataview.untouched.wat rename to tests/compiler/std/dataview.debug.wat index 2950f7f29b..5a1c0bd17a 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.debug.wat @@ -30,9 +30,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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 764)) @@ -2077,237 +2076,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2357,7 +2125,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.release.wat similarity index 95% rename from tests/compiler/std/dataview.optimized.wat rename to tests/compiler/std/dataview.release.wat index 63bf8dfbd3..5a38fa8724 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1278,7 +1278,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1293,7 +1293,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1306,7 +1306,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1314,7 +1314,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1325,16 +1325,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1345,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1362,7 +1362,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1370,8 +1370,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1388,7 +1388,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1398,13 +1398,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1417,40 +1417,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1510,182 +1510,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 @@ -2442,10 +2271,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 memory.size @@ -2480,7 +2309,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $2 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2500,7 +2329,6 @@ i32.store global.get $~lib/memory/__stack_pointer local.tee $3 - local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -2534,19 +2362,19 @@ i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 if local.get $0 - local.get $3 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $3 + local.get $2 i32.store offset=4 local.get $0 i32.const 8 @@ -2555,13 +2383,14 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 local.get $0 i32.store local.get $0 diff --git a/tests/compiler/std/dataview.ts b/tests/compiler/std/dataview.ts index eee61291ba..b44812abf4 100644 --- a/tests/compiler/std/dataview.ts +++ b/tests/compiler/std/dataview.ts @@ -12,154 +12,154 @@ let view = new DataView(array.buffer, array.byteOffset, array.byteLength); - assert(view.getFloat32(0, true) === -4.592586247781397e-20); - assert(view.getFloat32(1, true) === -2.3413961970849473e-37); - assert(view.getFloat32(2, true) === 7.710587701863113e+22); - assert(view.getFloat32(3, true) === 229.51023864746094); - assert(view.getFloat32(4, true) === 14079802746555335000.0); - - assert(view.getFloat32(0, false) === -2.2751405188178955e+33); - assert(view.getFloat32(1, false) === -62437351080004160000.0); - assert(view.getFloat32(2, false) === 1403059112509440.0); - assert(view.getFloat32(3, false) === -5.522466503261712e-20); - assert(view.getFloat32(4, false) === -1.6843597451835358e-37); - - assert(view.getFloat64(0, true) === 7.936550095674706e+150); - assert(view.getFloat64(0, false) === -4.1177747581885255e+264); - - assert(view.getInt8(0) === -10); - assert(view.getInt8(1) === -32); - assert(view.getInt8(2) === 88); - assert(view.getInt8(3) === -97); - assert(view.getInt8(4) === -126); - assert(view.getInt8(5) === 101); - assert(view.getInt8(6) === 67); - assert(view.getInt8(7) === 95); - - assert(view.getInt16(0, true) === -7946); - assert(view.getInt16(1, true) === 22752); - assert(view.getInt16(2, true) === -24744); - assert(view.getInt16(3, true) === -32097); - assert(view.getInt16(4, true) === 25986); - assert(view.getInt16(5, true) === 17253); - assert(view.getInt16(6, true) === 24387); - - assert(view.getInt16(0, false) === -2336); - assert(view.getInt16(1, false) === -8104); - assert(view.getInt16(2, false) === 22687); - assert(view.getInt16(3, false) === -24702); - assert(view.getInt16(4, false) === -32155); - assert(view.getInt16(5, false) === 25923); - assert(view.getInt16(6, false) === 17247); - - assert(view.getInt32(0, true) === -1621565194); - assert(view.getInt32(1, true) === -2103486240); - assert(view.getInt32(2, true) === 1703059288); - assert(view.getInt32(3, true) === 1130726047); - assert(view.getInt32(4, true) === 1598252418); - - assert(view.getInt32(0, false) === -153069409); - assert(view.getInt32(1, false) === -531062910); - assert(view.getInt32(2, false) === 1486848613); - assert(view.getInt32(3, false) === -1618844349); - assert(view.getInt32(4, false) === -2107292833); - - assert(view.getInt64(0, true) === 6864441868736323830); - assert(view.getInt64(0, false) === -657428103485373601); - - assert(view.getUint8(0) === 246); - assert(view.getUint8(1) === 224); - assert(view.getUint8(2) === 88); - assert(view.getUint8(3) === 159); - assert(view.getUint8(4) === 130); - assert(view.getUint8(5) === 101); - assert(view.getUint8(6) === 67); - assert(view.getUint8(7) === 95); - - assert(view.getUint16(0, true) === 57590); - assert(view.getUint16(1, true) === 22752); - assert(view.getUint16(2, true) === 40792); - assert(view.getUint16(3, true) === 33439); - assert(view.getUint16(4, true) === 25986); - assert(view.getUint16(5, true) === 17253); - assert(view.getUint16(6, true) === 24387); - - assert(view.getUint16(0, false) === 63200); - assert(view.getUint16(1, false) === 57432); - assert(view.getUint16(2, false) === 22687); - assert(view.getUint16(3, false) === 40834); - assert(view.getUint16(4, false) === 33381); - assert(view.getUint16(5, false) === 25923); - assert(view.getUint16(6, false) === 17247); - - assert(view.getUint32(0, true) === 2673402102); - assert(view.getUint32(1, true) === 2191481056); - assert(view.getUint32(2, true) === 1703059288); - assert(view.getUint32(3, true) === 1130726047); - assert(view.getUint32(4, true) === 1598252418); - - assert(view.getUint32(0, false) === 4141897887); - assert(view.getUint32(1, false) === 3763904386); - assert(view.getUint32(2, false) === 1486848613); - assert(view.getUint32(3, false) === 2676122947); - assert(view.getUint32(4, false) === 2187674463); - - assert(view.getUint64(0, true) === 6864441868736323830); - assert(view.getUint64(0, false) === 17789315970224178015); + assert(view.getFloat32(0, true) == -4.592586247781397e-20); + assert(view.getFloat32(1, true) == -2.3413961970849473e-37); + assert(view.getFloat32(2, true) == 7.710587701863113e+22); + assert(view.getFloat32(3, true) == 229.51023864746094); + assert(view.getFloat32(4, true) == 14079802746555335000.0); + + assert(view.getFloat32(0, false) == -2.2751405188178955e+33); + assert(view.getFloat32(1, false) == -62437351080004160000.0); + assert(view.getFloat32(2, false) == 1403059112509440.0); + assert(view.getFloat32(3, false) == -5.522466503261712e-20); + assert(view.getFloat32(4, false) == -1.6843597451835358e-37); + + assert(view.getFloat64(0, true) == 7.936550095674706e+150); + assert(view.getFloat64(0, false) == -4.1177747581885255e+264); + + assert(view.getInt8(0) == -10); + assert(view.getInt8(1) == -32); + assert(view.getInt8(2) == 88); + assert(view.getInt8(3) == -97); + assert(view.getInt8(4) == -126); + assert(view.getInt8(5) == 101); + assert(view.getInt8(6) == 67); + assert(view.getInt8(7) == 95); + + assert(view.getInt16(0, true) == -7946); + assert(view.getInt16(1, true) == 22752); + assert(view.getInt16(2, true) == -24744); + assert(view.getInt16(3, true) == -32097); + assert(view.getInt16(4, true) == 25986); + assert(view.getInt16(5, true) == 17253); + assert(view.getInt16(6, true) == 24387); + + assert(view.getInt16(0, false) == -2336); + assert(view.getInt16(1, false) == -8104); + assert(view.getInt16(2, false) == 22687); + assert(view.getInt16(3, false) == -24702); + assert(view.getInt16(4, false) == -32155); + assert(view.getInt16(5, false) == 25923); + assert(view.getInt16(6, false) == 17247); + + assert(view.getInt32(0, true) == -1621565194); + assert(view.getInt32(1, true) == -2103486240); + assert(view.getInt32(2, true) == 1703059288); + assert(view.getInt32(3, true) == 1130726047); + assert(view.getInt32(4, true) == 1598252418); + + assert(view.getInt32(0, false) == -153069409); + assert(view.getInt32(1, false) == -531062910); + assert(view.getInt32(2, false) == 1486848613); + assert(view.getInt32(3, false) == -1618844349); + assert(view.getInt32(4, false) == -2107292833); + + assert(view.getInt64(0, true) == 6864441868736323830); + assert(view.getInt64(0, false) == -657428103485373601); + + assert(view.getUint8(0) == 246); + assert(view.getUint8(1) == 224); + assert(view.getUint8(2) == 88); + assert(view.getUint8(3) == 159); + assert(view.getUint8(4) == 130); + assert(view.getUint8(5) == 101); + assert(view.getUint8(6) == 67); + assert(view.getUint8(7) == 95); + + assert(view.getUint16(0, true) == 57590); + assert(view.getUint16(1, true) == 22752); + assert(view.getUint16(2, true) == 40792); + assert(view.getUint16(3, true) == 33439); + assert(view.getUint16(4, true) == 25986); + assert(view.getUint16(5, true) == 17253); + assert(view.getUint16(6, true) == 24387); + + assert(view.getUint16(0, false) == 63200); + assert(view.getUint16(1, false) == 57432); + assert(view.getUint16(2, false) == 22687); + assert(view.getUint16(3, false) == 40834); + assert(view.getUint16(4, false) == 33381); + assert(view.getUint16(5, false) == 25923); + assert(view.getUint16(6, false) == 17247); + + assert(view.getUint32(0, true) == 2673402102); + assert(view.getUint32(1, true) == 2191481056); + assert(view.getUint32(2, true) == 1703059288); + assert(view.getUint32(3, true) == 1130726047); + assert(view.getUint32(4, true) == 1598252418); + + assert(view.getUint32(0, false) == 4141897887); + assert(view.getUint32(1, false) == 3763904386); + assert(view.getUint32(2, false) == 1486848613); + assert(view.getUint32(3, false) == 2676122947); + assert(view.getUint32(4, false) == 2187674463); + + assert(view.getUint64(0, true) == 6864441868736323830); + assert(view.getUint64(0, false) == 17789315970224178015); view.setFloat32(0, 1.5976661625240943e-18, true); - assert(view.getFloat32(0, true) === 1.5976661625240943e-18); + assert(view.getFloat32(0, true) == 1.5976661625240943e-18); view.setFloat32(0, 1.9762819733816963e+21, false); - assert(view.getFloat32(0, false) === 1.9762819733816963e+21); + assert(view.getFloat32(0, false) == 1.9762819733816963e+21); view.setFloat64(0, -1.094252199637739e+148, true); - assert(view.getFloat64(0, true) === -1.094252199637739e+148); + assert(view.getFloat64(0, true) == -1.094252199637739e+148); view.setFloat64(0, 6.022586634778589e-103, false); - assert(view.getFloat64(0, false) === 6.022586634778589e-103); + assert(view.getFloat64(0, false) == 6.022586634778589e-103); view.setInt8(0, 108); - assert(view.getInt8(0) === 108); + assert(view.getInt8(0) == 108); view.setInt16(0, -13360, true); - assert(view.getInt16(0, true) === -13360); + assert(view.getInt16(0, true) == -13360); view.setInt16(0, 14689, false); - assert(view.getInt16(0, false) === 14689); + assert(view.getInt16(0, false) == 14689); view.setInt32(0, 1204680201, true); - assert(view.getInt32(0, true) === 1204680201); + assert(view.getInt32(0, true) == 1204680201); view.setInt32(0, 660673230, false); - assert(view.getInt32(0, false) === 660673230); + assert(view.getInt32(0, false) == 660673230); view.setInt64(0, -3290739641816099749, true); - assert(view.getInt64(0, true) === -3290739641816099749); + assert(view.getInt64(0, true) == -3290739641816099749); view.setInt64(0, 8178932412950708047, false); - assert(view.getInt64(0, false) === 8178932412950708047); + assert(view.getInt64(0, false) == 8178932412950708047); view.setUint8(0, 238); - assert(view.getUint8(0) === 238); + assert(view.getUint8(0) == 238); view.setUint16(0, 58856, true); - assert(view.getUint16(0, true) === 58856); + assert(view.getUint16(0, true) == 58856); view.setUint16(0, 60400, false); - assert(view.getUint16(0, false) === 60400); + assert(view.getUint16(0, false) == 60400); view.setUint32(0, 3448161552, true); - assert(view.getUint32(0, true) === 3448161552); + assert(view.getUint32(0, true) == 3448161552); view.setUint32(0, 2784175665, false); - assert(view.getUint32(0, false) === 2784175665); + assert(view.getUint32(0, false) == 2784175665); view.setUint64(0, 2334704782995986958, true); - assert(view.getUint64(0, true) === 2334704782995986958); + assert(view.getUint64(0, true) == 2334704782995986958); view.setUint64(0, 11323557176419695287, false); - assert(view.getUint64(0, false) === 11323557176419695287); + assert(view.getUint64(0, false) == 11323557176419695287); view = new DataView(array.buffer); assert(view.byteOffset == 0); diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.debug.wat similarity index 87% rename from tests/compiler/std/date.untouched.wat rename to tests/compiler/std/date.debug.wat index 1d5aadc95d..2eaa891b49 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) @@ -34,10 +34,10 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 6480)) (global $~lib/memory/__data_end i32 (i32.const 6540)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22924)) @@ -2421,237 +2421,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2701,7 +2470,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/date/Date#set:epochMillis (param $0 i32) (param $1 i64) @@ -3597,1291 +3366,38 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/memory/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + i32.const 0 + local.set $4 + local.get $2 + local.get $3 + i32.mul + local.set $5 loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 + local.get $4 local.get $5 + i32.lt_u + local.set $6 + local.get $6 if local.get $0 - local.tee $6 - i32.const 1 + local.get $4 i32.add - local.set $0 - local.get $6 local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 local.get $2 - i32.const 1 - i32.sub - local.set $2 + memory.copy + local.get $4 + local.get $2 + i32.add + local.set $4 br $while-continue|0 end end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/memory/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $4 - local.get $2 - local.get $3 - i32.mul - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $4 - local.get $2 - i32.add - local.set $4 - br $while-continue|0 - end - end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String#concat @@ -5044,7 +3560,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) @@ -5253,7 +3769,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) @@ -6005,47 +4521,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=40 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=48 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=56 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=64 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=72 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=80 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=88 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=96 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=104 + i32.const 0 + i32.const 112 + memory.fill local.get $0 i32.load local.set $2 @@ -6399,23 +4877,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 28 i32.const 4 @@ -6567,20 +5031,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 + i32.const 0 + i32.const 40 + memory.fill local.get $0 call $~lib/date/Date#getUTCHours i32.const 10 @@ -6702,41 +5155,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=40 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=48 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=56 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=64 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=72 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=80 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=88 + i32.const 0 + i32.const 96 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 28 i32.const 4 @@ -7020,14 +5441,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill local.get $2 i32.eqz if @@ -7251,7 +5667,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $10 local.get $7 call $~lib/array/Array<~lib/string/String>#push @@ -7331,7 +5747,7 @@ local.get $14 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $10 local.get $4 call $~lib/array/Array<~lib/string/String>#push @@ -7379,17 +5795,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill local.get $0 call $~lib/string/String#get:length i32.eqz @@ -7642,20 +6050,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=32 + i32.const 36 + memory.fill i32.const 1970 local.set $2 i32.const 0 @@ -11051,19 +9448,19 @@ i32.add local.get $2 local.get $10 - call $~lib/memory/memory.copy + memory.copy else local.get $7 local.get $2 local.get $6 - call $~lib/memory/memory.copy + memory.copy end local.get $7 local.get $6 i32.add local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $11 global.get $~lib/memory/__stack_pointer @@ -11122,13 +9519,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer @@ -11261,7 +9658,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/date.json b/tests/compiler/std/date.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/std/date.json +++ b/tests/compiler/std/date.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.release.wat similarity index 80% rename from tests/compiler/std/date.optimized.wat rename to tests/compiler/std/date.release.wat index 5dd1102445..8f122fe148 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.release.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -28,208 +28,108 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23948)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") - (data (i32.const 1084) ",") - (data (i32.const 1096) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") - (data (i32.const 1132) ",") - (data (i32.const 1144) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") - (data (i32.const 1180) "<") - (data (i32.const 1192) "\01\00\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 (i32.const 1244) "<") - (data (i32.const 1256) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1436) ",") - (data (i32.const 1448) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1516) "<") - (data (i32.const 1528) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") + (data (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") + (data (i32.const 1132) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") + (data (i32.const 1180) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1244) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1372) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1516) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1581) "\03\02\05\00\03\05\01\04\06\02\04") - (data (i32.const 1596) "\1c") - (data (i32.const 1608) "\01\00\00\00\02\00\00\00-") - (data (i32.const 1628) "\1c") - (data (i32.const 1640) "\01\00\00\00\02\00\00\00+") - (data (i32.const 1660) "|") - (data (i32.const 1672) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1788) "<") - (data (i32.const 1800) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1852) "\1c") - (data (i32.const 1864) "\01\00\00\00\02\00\00\000") + (data (i32.const 1596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 1628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") + (data (i32.const 1660) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1788) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 1884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2284) "\1c\04") - (data (i32.const 2296) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 3340) "\\") - (data (i32.const 3352) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 3436) "\1c") - (data (i32.const 3448) "\01") - (data (i32.const 3468) "\1c") - (data (i32.const 3480) "\01\00\00\00\02\00\00\00T") - (data (i32.const 3500) "\1c") - (data (i32.const 3512) "\01\00\00\00\02\00\00\00:") - (data (i32.const 3532) "\1c") - (data (i32.const 3544) "\01\00\00\00\02\00\00\00.") - (data (i32.const 3564) "\1c") - (data (i32.const 3576) "\01\00\00\00\02\00\00\00Z") - (data (i32.const 3596) "L") - (data (i32.const 3608) "\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 3676) "L") - (data (i32.const 3688) "\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 3756) "L") - (data (i32.const 3768) "\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") - (data (i32.const 3836) "L") - (data (i32.const 3848) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") - (data (i32.const 3916) "L") - (data (i32.const 3928) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") - (data (i32.const 3996) "L") - (data (i32.const 4008) "\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") - (data (i32.const 4076) "L") - (data (i32.const 4088) "\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 4156) "L") - (data (i32.const 4168) "\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 4236) "L") - (data (i32.const 4248) "\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") - (data (i32.const 4316) "\1c") - (data (i32.const 4328) "\01\00\00\00\08\00\00\00S\00u\00n\00 ") - (data (i32.const 4348) "\1c") - (data (i32.const 4360) "\01\00\00\00\08\00\00\00M\00o\00n\00 ") - (data (i32.const 4380) "\1c") - (data (i32.const 4392) "\01\00\00\00\08\00\00\00T\00u\00e\00 ") - (data (i32.const 4412) "\1c") - (data (i32.const 4424) "\01\00\00\00\08\00\00\00W\00e\00d\00 ") - (data (i32.const 4444) "\1c") - (data (i32.const 4456) "\01\00\00\00\08\00\00\00T\00h\00u\00 ") - (data (i32.const 4476) "\1c") - (data (i32.const 4488) "\01\00\00\00\08\00\00\00F\00r\00i\00 ") - (data (i32.const 4508) "\1c") - (data (i32.const 4520) "\01\00\00\00\08\00\00\00S\00a\00t\00 ") - (data (i32.const 4540) ",") - (data (i32.const 4552) "\04\00\00\00\1c\00\00\00\f0\10\00\00\10\11\00\000\11\00\00P\11\00\00p\11\00\00\90\11\00\00\b0\11") - (data (i32.const 4588) "\1c") - (data (i32.const 4600) "\01\00\00\00\08\00\00\00J\00a\00n\00 ") - (data (i32.const 4620) "\1c") - (data (i32.const 4632) "\01\00\00\00\08\00\00\00F\00e\00b\00 ") - (data (i32.const 4652) "\1c") - (data (i32.const 4664) "\01\00\00\00\08\00\00\00M\00a\00r\00 ") - (data (i32.const 4684) "\1c") - (data (i32.const 4696) "\01\00\00\00\08\00\00\00A\00p\00r\00 ") - (data (i32.const 4716) "\1c") - (data (i32.const 4728) "\01\00\00\00\08\00\00\00M\00a\00y\00 ") - (data (i32.const 4748) "\1c") - (data (i32.const 4760) "\01\00\00\00\08\00\00\00J\00u\00n\00 ") - (data (i32.const 4780) "\1c") - (data (i32.const 4792) "\01\00\00\00\08\00\00\00J\00u\00l\00 ") - (data (i32.const 4812) "\1c") - (data (i32.const 4824) "\01\00\00\00\08\00\00\00A\00u\00g\00 ") - (data (i32.const 4844) "\1c") - (data (i32.const 4856) "\01\00\00\00\08\00\00\00S\00e\00p\00 ") - (data (i32.const 4876) "\1c") - (data (i32.const 4888) "\01\00\00\00\08\00\00\00O\00c\00t\00 ") - (data (i32.const 4908) "\1c") - (data (i32.const 4920) "\01\00\00\00\08\00\00\00N\00o\00v\00 ") - (data (i32.const 4940) "\1c") - (data (i32.const 4952) "\01\00\00\00\08\00\00\00D\00e\00c\00 ") - (data (i32.const 4972) "L") - (data (i32.const 4984) "\04\00\00\000\00\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00\c0\12\00\00\e0\12\00\00\00\13\00\00 \13\00\00@\13\00\00`\13") - (data (i32.const 5052) "\1c") - (data (i32.const 5064) "\01\00\00\00\02\00\00\00 ") - (data (i32.const 5084) "<") - (data (i32.const 5096) "\01\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") - (data (i32.const 5148) "<") - (data (i32.const 5160) "\01\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") - (data (i32.const 5212) "<") - (data (i32.const 5224) "\01\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") - (data (i32.const 5276) ",") - (data (i32.const 5288) "\01\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") - (data (i32.const 5324) ",") - (data (i32.const 5336) "\01\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") - (data (i32.const 5372) "\1c") - (data (i32.const 5384) "\01\00\00\00\n\00\00\00S\00u\00n\00,\00 ") - (data (i32.const 5404) "\1c") - (data (i32.const 5416) "\01\00\00\00\n\00\00\00M\00o\00n\00,\00 ") - (data (i32.const 5436) "\1c") - (data (i32.const 5448) "\01\00\00\00\n\00\00\00T\00u\00e\00,\00 ") - (data (i32.const 5468) "\1c") - (data (i32.const 5480) "\01\00\00\00\n\00\00\00W\00e\00d\00,\00 ") - (data (i32.const 5500) "\1c") - (data (i32.const 5512) "\01\00\00\00\n\00\00\00T\00h\00u\00,\00 ") - (data (i32.const 5532) "\1c") - (data (i32.const 5544) "\01\00\00\00\n\00\00\00F\00r\00i\00,\00 ") - (data (i32.const 5564) "\1c") - (data (i32.const 5576) "\01\00\00\00\n\00\00\00S\00a\00t\00,\00 ") - (data (i32.const 5596) ",") - (data (i32.const 5608) "\04\00\00\00\1c\00\00\00\10\15\00\000\15\00\00P\15\00\00p\15\00\00\90\15\00\00\b0\15\00\00\d0\15") - (data (i32.const 5644) "\1c") - (data (i32.const 5656) "\01\00\00\00\n\00\00\00 \00J\00a\00n\00 ") - (data (i32.const 5676) "\1c") - (data (i32.const 5688) "\01\00\00\00\n\00\00\00 \00F\00e\00b\00 ") - (data (i32.const 5708) "\1c") - (data (i32.const 5720) "\01\00\00\00\n\00\00\00 \00M\00a\00r\00 ") - (data (i32.const 5740) "\1c") - (data (i32.const 5752) "\01\00\00\00\n\00\00\00 \00A\00p\00r\00 ") - (data (i32.const 5772) "\1c") - (data (i32.const 5784) "\01\00\00\00\n\00\00\00 \00M\00a\00y\00 ") - (data (i32.const 5804) "\1c") - (data (i32.const 5816) "\01\00\00\00\n\00\00\00 \00J\00u\00n\00 ") - (data (i32.const 5836) "\1c") - (data (i32.const 5848) "\01\00\00\00\n\00\00\00 \00J\00u\00l\00 ") - (data (i32.const 5868) "\1c") - (data (i32.const 5880) "\01\00\00\00\n\00\00\00 \00A\00u\00g\00 ") - (data (i32.const 5900) "\1c") - (data (i32.const 5912) "\01\00\00\00\n\00\00\00 \00S\00e\00p\00 ") - (data (i32.const 5932) "\1c") - (data (i32.const 5944) "\01\00\00\00\n\00\00\00 \00O\00c\00t\00 ") - (data (i32.const 5964) "\1c") - (data (i32.const 5976) "\01\00\00\00\n\00\00\00 \00N\00o\00v\00 ") - (data (i32.const 5996) "\1c") - (data (i32.const 6008) "\01\00\00\00\n\00\00\00 \00D\00e\00c\00 ") - (data (i32.const 6028) "L") - (data (i32.const 6040) "\04\00\00\000\00\00\00 \16\00\00@\16\00\00`\16\00\00\80\16\00\00\a0\16\00\00\c0\16\00\00\e0\16\00\00\00\17\00\00 \17\00\00@\17\00\00`\17\00\00\80\17") - (data (i32.const 6108) "\1c") - (data (i32.const 6120) "\01\00\00\00\08\00\00\00 \00G\00M\00T") - (data (i32.const 6140) "L") - (data (i32.const 6152) "\01\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data (i32.const 6220) "L") - (data (i32.const 6232) "\01\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") - (data (i32.const 6300) "L") - (data (i32.const 6312) "\01\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data (i32.const 6380) ",") - (data (i32.const 6392) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") - (data (i32.const 6428) ",") - (data (i32.const 6440) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 6476) ",") - (data (i32.const 6488) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 6524) "|") - (data (i32.const 6536) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 6652) ",") - (data (i32.const 6664) "\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") - (data (i32.const 6700) ",") - (data (i32.const 6712) "\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") - (data (i32.const 6748) "<") - (data (i32.const 6760) "\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") - (data (i32.const 6812) "L") - (data (i32.const 6824) "\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") - (data (i32.const 6892) "L") - (data (i32.const 6904) "\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") - (data (i32.const 6972) "\1c") - (data (i32.const 6984) "\01\00\00\00\08\00\00\000\000\000\000") - (data (i32.const 7004) "\1c") - (data (i32.const 7016) "\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 7036) "\1c") - (data (i32.const 7048) "\01\00\00\00\08\00\00\001\009\007\006") - (data (i32.const 7068) ",") - (data (i32.const 7080) "\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002") - (data (i32.const 7116) "<") - (data (i32.const 7128) "\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") - (data (i32.const 7180) "L") - (data (i32.const 7192) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 7260) "L") - (data (i32.const 7272) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 7340) "L") - (data (i32.const 7352) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 7420) "L") - (data (i32.const 7432) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") - (data (i32.const 7504) "\07\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 7532) " \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") + (data (i32.const 2284) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3340) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 3468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00T") + (data (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00:") + (data (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00.") + (data (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00Z") + (data (i32.const 3596) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 3676) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 3756) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") + (data (i32.const 3836) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data (i32.const 3916) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data (i32.const 3996) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") + (data (i32.const 4076) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 4156) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 4236) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") + (data (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00u\00n\00 ") + (data (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00o\00n\00 ") + (data (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00T\00u\00e\00 ") + (data (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00W\00e\00d\00 ") + (data (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00T\00h\00u\00 ") + (data (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00r\00i\00 ") + (data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00a\00t\00 ") + (data (i32.const 4540) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\1c\00\00\00\f0\10\00\00\10\11\00\000\11\00\00P\11\00\00p\11\00\00\90\11\00\00\b0\11") + (data (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00a\00n\00 ") + (data (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00e\00b\00 ") + (data (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00a\00r\00 ") + (data (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00p\00r\00 ") + (data (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00a\00y\00 ") + (data (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00u\00n\00 ") + (data (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00u\00l\00 ") + (data (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00u\00g\00 ") + (data (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00e\00p\00 ") + (data (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00O\00c\00t\00 ") + (data (i32.const 4908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00o\00v\00 ") + (data (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00D\00e\00c\00 ") + (data (i32.const 4972) "L\00\00\00\00\00\00\00\00\00\00\00\04\00\00\000\00\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00\c0\12\00\00\e0\12\00\00\00\13\00\00 \13\00\00@\13\00\00`\13") + (data (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00 ") + (data (i32.const 5084) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") + (data (i32.const 5148) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") + (data (i32.const 5212) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") + (data (i32.const 5276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") + (data (i32.const 5324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") + (data (i32.const 5372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00u\00n\00,\00 ") + (data (i32.const 5404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00o\00n\00,\00 ") + (data (i32.const 5436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00T\00u\00e\00,\00 ") + (data (i32.const 5468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00W\00e\00d\00,\00 ") + (data (i32.const 5500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00T\00h\00u\00,\00 ") + (data (i32.const 5532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00r\00i\00,\00 ") + (data (i32.const 5564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00a\00t\00,\00 ") + (data (i32.const 5596) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\1c\00\00\00\10\15\00\000\15\00\00P\15\00\00p\15\00\00\90\15\00\00\b0\15\00\00\d0\15") + (data (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00a\00n\00 ") + (data (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00F\00e\00b\00 ") + (data (i32.const 5708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00M\00a\00r\00 ") + (data (i32.const 5740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00A\00p\00r\00 ") + (data (i32.const 5772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00M\00a\00y\00 ") + (data (i32.const 5804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00u\00n\00 ") + (data (i32.const 5836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00u\00l\00 ") + (data (i32.const 5868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00A\00u\00g\00 ") + (data (i32.const 5900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00S\00e\00p\00 ") + (data (i32.const 5932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00O\00c\00t\00 ") + (data (i32.const 5964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00N\00o\00v\00 ") + (data (i32.const 5996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00D\00e\00c\00 ") + (data (i32.const 6028) "L\00\00\00\00\00\00\00\00\00\00\00\04\00\00\000\00\00\00 \16\00\00@\16\00\00`\16\00\00\80\16\00\00\a0\16\00\00\c0\16\00\00\e0\16\00\00\00\17\00\00 \17\00\00@\17\00\00`\17\00\00\80\17") + (data (i32.const 6108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00 \00G\00M\00T") + (data (i32.const 6140) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data (i32.const 6220) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") + (data (i32.const 6300) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data (i32.const 6380) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") + (data (i32.const 6428) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 6476) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 6524) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 6652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") + (data (i32.const 6700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") + (data (i32.const 6748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") + (data (i32.const 6812) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") + (data (i32.const 6892) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") + (data (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\000") + (data (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001") + (data (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\009\007\006") + (data (i32.const 7068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002") + (data (i32.const 7116) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") + (data (i32.const 7180) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 7260) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 7340) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 7420) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") + (data (i32.const 7504) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) @@ -1638,7 +1538,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1653,7 +1553,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1666,7 +1566,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1674,7 +1574,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1685,16 +1585,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1705,16 +1605,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1722,7 +1622,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1730,8 +1630,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1748,7 +1648,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1758,13 +1658,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1777,40 +1677,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1870,182 +1770,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) local.get $1 @@ -2299,7 +2028,6 @@ return end local.get $0 - local.get $0 i32.load local.get $1 i32.const 1 @@ -2319,6 +2047,7 @@ i32.const 400 i32.div_s local.set $1 + local.get $0 i64.const 86400000 i64.const 0 local.get $0 @@ -2388,7 +2117,6 @@ if return end - local.get $0 local.get $1 local.get $0 i32.load offset=4 @@ -2407,6 +2135,7 @@ i32.const 400 i32.div_s local.set $1 + local.get $0 i64.const 86400000 i64.const 0 local.get $0 @@ -2679,923 +2408,50 @@ end local.get $1 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - loop $while-continue|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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - i32.add - local.tee $2 - i32.eqz + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.add + local.tee $2 + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3614,13 +2470,13 @@ local.get $2 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $3 i32.add local.get $1 local.get $4 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3826,21 +2682,19 @@ (local $6 i32) (local $7 i32) local.get $0 - local.tee $2 - i32.load offset=8 - local.set $0 - local.get $2 i32.load offset=12 local.tee $5 i32.const 1 i32.add - local.tee $4 + local.tee $6 local.get $0 + i32.load offset=8 + local.tee $2 i32.const 2 i32.shr_u i32.gt_u if - local.get $4 + local.get $6 i32.const 268435455 i32.gt_u if @@ -3852,31 +2706,31 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $0 + local.get $2 i32.const 1 i32.shl - local.tee $0 + local.tee $2 i32.const 1073741820 - local.get $0 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $0 - local.get $4 + local.tee $2 + local.get $6 i32.const 8 - local.get $4 + local.get $6 i32.const 8 i32.gt_u select i32.const 2 i32.shl local.tee $3 - local.get $0 + local.get $2 local.get $3 i32.gt_u select - local.tee $6 - local.get $2 + local.tee $4 + local.get $0 i32.load local.tee $3 i32.const 20 @@ -3890,51 +2744,51 @@ i32.le_u if local.get $7 - local.get $6 + local.get $4 i32.store offset=16 local.get $3 - local.set $0 + local.set $2 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $6 + local.get $4 local.get $7 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 local.get $3 - local.get $6 + local.get $4 local.get $7 i32.load offset=16 local.tee $7 - local.get $6 + local.get $4 local.get $7 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy end - local.get $0 + local.get $2 local.get $3 i32.ne if - local.get $2 local.get $0 - i32.store local.get $2 + i32.store local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 if - local.get $2 local.get $0 + local.get $2 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $2 - local.get $6 + local.get $0 + local.get $4 i32.store offset=8 end - local.get $2 + local.get $0 i32.load offset=4 local.get $5 i32.const 2 @@ -3944,13 +2798,13 @@ i32.store local.get $1 if - local.get $2 + local.get $0 local.get $1 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 - local.get $4 + local.get $0 + local.get $6 i32.store offset=12 ) (func $~lib/util/string/strtol (param $0 i32) (result i32) @@ -4237,26 +3091,16 @@ block $~lib/array/Array<~lib/string/String> block $~lib/staticarray/StaticArray<~lib/string/String> block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end return @@ -4297,17 +3141,17 @@ i32.const 2 i32.shl i32.add - local.set $3 + local.set $2 loop $while-continue|01 local.get $1 - local.get $3 + local.get $2 i32.lt_u if local.get $1 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 @@ -4360,48 +3204,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $1 - i64.const 0 - i64.store offset=32 - local.get $1 - i64.const 0 - i64.store offset=40 - local.get $1 - i64.const 0 - i64.store offset=48 - local.get $1 - i64.const 0 - i64.store offset=56 - local.get $1 - i64.const 0 - i64.store offset=64 - local.get $1 - i64.const 0 - i64.store offset=72 - local.get $1 - i64.const 0 - i64.store offset=80 - local.get $1 - i64.const 0 - i64.store offset=88 - local.get $1 - i64.const 0 - i64.store offset=96 - local.get $1 - i64.const 0 - i64.store offset=104 + i32.const 0 + i32.const 112 + memory.fill local.get $0 i32.load local.tee $1 @@ -4757,94 +3562,80 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $1 - i64.const 0 - i64.store offset=32 - local.get $1 i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.const 4560 i32.const 28 - call $~lib/memory/memory.copy + memory.copy local.get $1 - local.get $2 + local.get $3 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.const 4992 i32.const 48 - call $~lib/memory/memory.copy - local.get $3 + memory.copy + local.get $2 i32.store offset=4 local.get $0 i32.load - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 - local.tee $1 + local.tee $5 i32.const 3 i32.lt_s i32.sub - local.set $4 + local.set $6 i32.const 7 i32.const 0 - local.get $1 + local.get $0 + i32.load offset=8 + local.tee $1 + local.get $5 i32.const 1579 i32.add i32.load8_u - local.get $4 - local.get $4 + local.get $6 + local.get $6 i32.const 3 i32.sub - local.get $4 + local.get $6 i32.const 0 i32.ge_s - local.tee $6 + local.tee $0 select i32.const 4 i32.div_s - local.get $4 - local.get $4 + local.get $6 + local.get $6 i32.const 99 i32.sub - local.get $6 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $4 - local.get $4 + local.get $6 + local.get $6 i32.const 399 i32.sub - local.get $6 + local.get $0 select i32.const 400 i32.div_s i32.add - local.get $4 + local.get $6 i32.add i32.add - local.get $0 - i32.load offset=8 - local.tee $4 i32.add i32.const 7 i32.rem_s @@ -4856,11 +3647,11 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 31 i32.shr_s local.tee $7 - local.get $5 + local.get $4 local.get $7 i32.add i32.xor @@ -4877,15 +3668,15 @@ call $~lib/string/String#padStart local.tee $0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 1616 i32.store offset=8 - local.get $5 + local.get $4 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -4893,51 +3684,51 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 local.get $6 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $3 i32.store offset=32 + local.get $4 local.get $5 - local.get $1 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.tee $1 + local.tee $2 i32.store offset=36 + local.get $3 local.get $2 - local.get $1 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=24 - local.get $4 + local.get $1 call $~lib/number/I32#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=32 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=40 - local.get $2 + local.get $1 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=28 local.get $1 + i32.store offset=28 local.get $2 + local.get $1 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4981,21 +3772,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i64.const 0 - i64.store offset=16 - local.get $2 - i64.const 0 - i64.store offset=24 - local.get $2 - i64.const 0 - i64.store offset=32 + i32.const 0 + i32.const 40 + memory.fill i64.const 86400000 i64.const 0 local.get $0 @@ -5148,67 +3927,35 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $1 - i64.const 0 - i64.store offset=32 - local.get $1 - i64.const 0 - i64.store offset=40 - local.get $1 - i64.const 0 - i64.store offset=48 - local.get $1 - i64.const 0 - i64.store offset=56 - local.get $1 - i64.const 0 - i64.store offset=64 - local.get $1 - i64.const 0 - i64.store offset=72 - local.get $1 - i64.const 0 - i64.store offset=80 - local.get $1 - i64.const 0 - i64.store offset=88 + i32.const 0 + i32.const 96 + memory.fill i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.const 5616 i32.const 28 - call $~lib/memory/memory.copy + memory.copy local.get $1 - local.get $4 + local.get $3 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 6048 i32.const 48 - call $~lib/memory/memory.copy - local.get $5 + memory.copy + local.get $4 i32.store offset=4 local.get $0 i32.load - local.tee $6 + local.tee $5 local.get $0 i32.load offset=4 - local.tee $3 + local.tee $6 i32.const 3 i32.lt_s i32.sub @@ -5218,7 +3965,7 @@ local.get $0 i32.load offset=8 local.tee $7 - local.get $3 + local.get $6 i32.const 1579 i32.add i32.load8_u @@ -5265,11 +4012,11 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 31 i32.shr_s local.tee $9 - local.get $6 + local.get $5 local.get $9 i32.add i32.xor @@ -5286,15 +4033,15 @@ call $~lib/string/String#padStart local.tee $1 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $5 i32.const 1616 i32.store offset=8 - local.get $6 + local.get $5 i32.const 1616 local.get $1 call $~lib/string/String.__concat @@ -5305,47 +4052,47 @@ local.get $8 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load - local.tee $4 + local.tee $3 i32.store offset=80 local.get $7 call $~lib/number/I32#toString - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=88 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $6 + local.get $5 i32.const 2 call $~lib/string/String#padStart - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=84 - local.get $4 - local.get $6 + local.get $3 + local.get $5 call $~lib/string/String.__concat - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add i32.load - local.tee $3 + local.tee $4 i32.store offset=76 - local.get $4 local.get $3 + local.get $4 call $~lib/string/String.__concat local.set $3 global.get $~lib/memory/__stack_pointer @@ -5535,15 +4282,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i64.const 0 - i64.store offset=8 - local.get $5 - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill block $folding-inner2 block $folding-inner1 local.get $1 @@ -5577,7 +4318,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $8 + local.set $4 block $folding-inner0 local.get $1 i32.const 20 @@ -5585,9 +4326,9 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $8 if - local.get $8 + local.get $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -5607,17 +4348,17 @@ return end else - local.get $8 + local.get $4 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.const 2147483647 - local.get $8 + local.get $4 i32.const 2147483647 i32.ne select - local.tee $2 + local.tee $3 call $~lib/rt/__newArray local.tee $1 i32.store @@ -5627,7 +4368,7 @@ loop $for-loop|0 local.get $2 local.get $3 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 2 @@ -5636,14 +4377,14 @@ local.tee $5 i32.store offset=8 local.get $5 - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u i32.store16 - local.get $3 + local.get $2 i32.const 2 i32.shl local.get $4 @@ -5657,10 +4398,10 @@ i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -5669,7 +4410,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store offset=12 loop $while-continue|1 local.get $0 @@ -5703,27 +4444,27 @@ local.get $0 i32.add local.get $9 - call $~lib/memory/memory.copy - local.get $3 + memory.copy + local.get $5 local.get $7 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer i32.const 3456 i32.store offset=20 - local.get $3 + local.get $5 i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end - local.get $4 + local.get $3 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2147483647 i32.eq br_if $folding-inner2 - local.get $5 local.get $6 + local.get $8 i32.add local.set $2 br $while-continue|1 @@ -5732,12 +4473,12 @@ local.get $2 i32.eqz if - local.get $3 + local.get $5 local.get $0 call $~lib/array/Array<~lib/string/String>#push br $folding-inner2 end - local.get $8 + local.get $4 local.get $2 i32.sub local.tee $1 @@ -5751,24 +4492,24 @@ local.tee $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=4 - local.get $4 + local.get $3 local.get $2 i32.const 1 i32.shl local.get $0 i32.add local.get $1 - call $~lib/memory/memory.copy + memory.copy + local.get $5 local.get $3 - local.get $4 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer i32.const 3456 i32.store offset=20 - local.get $3 + local.get $5 i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end @@ -5776,7 +4517,7 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 0 @@ -5794,7 +4535,7 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 ) (func $~lib/date/Date.fromString (param $0 i32) (result i32) (local $1 i32) @@ -5820,18 +4561,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill local.get $0 i32.const 20 i32.sub @@ -6061,21 +4793,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 i32.const 0 - i32.store offset=32 + i32.const 36 + memory.fill block $folding-inner0 i32.const 1970 i32.const 1 @@ -9443,7 +8163,7 @@ i32.add i32.const 1872 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $3 i32.add @@ -9456,19 +8176,19 @@ i32.add i32.const 1872 local.get $1 - call $~lib/memory/memory.copy + memory.copy else local.get $5 i32.const 1872 local.get $6 - call $~lib/memory/memory.copy + memory.copy end local.get $5 local.get $6 i32.add local.get $0 local.get $4 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9583,7 +8303,7 @@ local.get $4 i32.add local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9617,7 +8337,7 @@ local.get $0 i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $3 @@ -9625,30 +8345,30 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 local.get $3 i32.store local.get $3 if - local.get $1 + local.get $2 local.get $3 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $2 local.get $3 i32.store offset=4 - local.get $1 local.get $2 - i32.store offset=8 local.get $1 + i32.store offset=8 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.debug.wat similarity index 100% rename from tests/compiler/std/hash.untouched.wat rename to tests/compiler/std/hash.debug.wat diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.release.wat similarity index 100% rename from tests/compiler/std/hash.optimized.wat rename to tests/compiler/std/hash.release.wat diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.debug.wat similarity index 94% rename from tests/compiler/std/map.untouched.wat rename to tests/compiler/std/map.debug.wat index d74fda104e..d0e678ecfc 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.debug.wat @@ -3,9 +3,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) @@ -43,9 +43,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/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 996)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17380)) @@ -2090,237 +2089,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2370,7 +2138,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -2655,1410 +2423,157 @@ local.tee $3 i32.store local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - i32.load8_s - local.set $12 - local.get $11 - local.get $12 - call $~lib/map/MapEntry#set:key - local.get $11 - local.get $10 - i32.load offset=4 - call $~lib/map/MapEntry#set:value - local.get $12 - call $~lib/util/hash/HASH - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - call $~lib/map/MapEntry#set:taggedNext - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.get $3 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - call $~lib/map/Map#set:bucketsMask - local.get $0 - local.get $5 - call $~lib/map/Map#set:entries - local.get $0 - local.get $4 - call $~lib/map/Map#set:entriesCapacity - local.get $0 - local.get $0 - i32.load offset=20 - call $~lib/map/Map#set:entriesOffset - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.set $2 - local.get $2 - i32.eqz - if - i32.const 592 - i32.const 656 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if + local.get $6 + local.set $10 + local.get $10 + i32.load offset=8 + i32.const 1 i32.and - i32.eq + i32.eqz if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 + local.get $8 + local.set $11 + local.get $10 + i32.load8_s + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i32.load offset=4 + call $~lib/map/MapEntry#set:value + local.get $12 + call $~lib/util/hash/HASH + local.get $1 + i32.and + local.set $13 local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $13 + i32.const 4 + i32.mul + i32.add + local.set $14 + local.get $11 + local.get $14 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $14 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $while-continue|0 end end + local.get $0 + local.get $3 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + call $~lib/map/Map#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/map/Map#set:entries + local.get $0 + local.get $4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/map/Map#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/HASH + call $~lib/map/Map#find + local.set $2 + local.get $2 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4102,7 +2617,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) @@ -5061,14 +3576,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -6354,14 +4864,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -7655,14 +6160,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -8948,14 +7448,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -9582,14 +8077,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -10856,14 +9346,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -12147,14 +10632,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -13446,14 +11926,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -14729,14 +13204,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -14768,7 +13238,7 @@ local.get $1 i32.const 10 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add call $~lib/map/Map#set drop @@ -14789,7 +13259,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add i32.eq i32.eqz @@ -14847,7 +13317,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add i32.eq i32.eqz @@ -14863,7 +13333,7 @@ local.get $1 i32.const 20 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add call $~lib/map/Map#set drop @@ -14884,7 +13354,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add i32.eq i32.eqz @@ -15054,7 +13524,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add i32.eq i32.eqz @@ -15129,7 +13599,7 @@ local.get $1 i32.const 10 local.get $1 - i32.trunc_f32_s + i32.trunc_sat_f32_s i32.add call $~lib/map/Map#set drop @@ -16029,14 +14499,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor @@ -16068,7 +14533,7 @@ local.get $1 i32.const 10 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add call $~lib/map/Map#set drop @@ -16089,7 +14554,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add i32.eq i32.eqz @@ -16147,7 +14612,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add i32.eq i32.eqz @@ -16163,7 +14628,7 @@ local.get $1 i32.const 20 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add call $~lib/map/Map#set drop @@ -16184,7 +14649,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add i32.eq i32.eqz @@ -16354,7 +14819,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add i32.eq i32.eqz @@ -16429,7 +14894,7 @@ local.get $1 i32.const 10 local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s i32.add call $~lib/map/Map#set drop diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.release.wat similarity index 67% rename from tests/compiler/std/map.optimized.wat rename to tests/compiler/std/map.release.wat index ada92b44c6..c8ebcfb15a 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.release.wat @@ -1286,7 +1286,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1301,7 +1301,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1314,7 +1314,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1322,7 +1322,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1333,16 +1333,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1353,16 +1353,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1370,7 +1370,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1378,8 +1378,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1396,7 +1396,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1406,13 +1406,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1425,40 +1425,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1518,182 +1518,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -1730,7 +1559,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1738,7 +1567,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1746,33 +1575,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $7 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $7 i32.load8_s local.tee $8 i32.store8 local.get $2 - local.get $5 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 @@ -1809,7 +1638,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add local.tee $8 i32.load @@ -1822,20 +1651,20 @@ i32.add local.set $2 end - local.get $5 + local.get $7 i32.const 12 i32.add - local.set $5 + local.set $7 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $6 i32.store - local.get $4 + local.get $6 if local.get $0 - local.get $4 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -1851,7 +1680,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -1869,7 +1698,6 @@ local.get $0 i32.load offset=4 local.get $1 - local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -1909,23 +1737,22 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $0 i32.load8_u - local.get $2 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $0 + local.get $2 i32.const -2 i32.and local.set $0 @@ -1933,9 +1760,9 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 1616 @@ -1945,3216 +1772,2707 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1073741820 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1456 + i32.const 1728 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u select + local.get $2 + i32.shl + local.set $1 + local.get $3 if - local.get $0 - local.tee $3 + local.get $5 i32.const 1 - i32.add - local.set $0 + i32.shl + local.tee $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 local.get $1 - local.tee $4 - i32.const 1 - i32.add + local.get $1 + local.get $2 + i32.lt_u + select local.set $1 - local.get $3 + end + block $__inlined_func$~lib/rt/itcms/__renew local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 + i32.const 20 i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 + local.tee $3 + i32.load + i32.const -4 + i32.and i32.const 16 + i32.sub + local.get $1 i32.ge_u if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 + local.get $3 local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub + i32.store offset=16 + local.get $4 local.set $2 - br $while-continue|1 + br $__inlined_func$~lib/rt/itcms/__renew end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 local.get $1 - i32.load - i32.store - local.get $0 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 local.get $1 - i32.load offset=4 - i32.store offset=4 + local.get $3 + i32.load offset=16 + local.tee $3 local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 + local.get $3 + i32.lt_u + select + memory.copy end local.get $2 - i32.const 4 - i32.and + local.get $4 + i32.ne if local.get $0 - local.get $1 - i32.load + local.get $2 i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 local.get $0 - i32.const 4 - i32.add - local.set $0 + local.get $2 + i32.store offset=4 + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $2 - i32.const 2 - i32.and + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $0 + local.get $1 i32.const 1 - i32.and + i32.add + local.tee $3 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.const 32 - i32.ge_u + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.set $0 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor local.get $1 - local.tee $4 + i32.and i32.const 2 + i32.shl + local.get $6 i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 local.get $2 - i32.const 2 - i32.sub + i32.store + local.get $2 + i32.const 12 + i32.add local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 + local.get $7 + i32.const 12 i32.add - local.set $0 + local.set $7 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + i32.store + local.get $6 + if + local.get $0 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 + i32.load8_u local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 + i32.const 255 + i32.and + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end end + i32.const 0 + local.set $1 end - local.get $2 - i32.const 16 - i32.and + local.get $1 + i32.eqz if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + i32.load offset=20 local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if local.get $0 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 + call $~lib/map/Map#rehash + end + ) + (func $~lib/map/Map#clear (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 + if local.get $0 - i32.const 2 - i32.add - local.tee $0 local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if local.get $0 local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $0 i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1073741820 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store local.get $2 - i32.shr_u - local.get $1 - i32.lt_u + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $3 if - i32.const 1456 - i32.const 1728 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select local.get $2 - i32.shl - local.set $5 - local.get $0 - i32.load - local.tee $2 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1073741820 - local.get $1 - i32.const 1073741820 - i32.lt_u - select - local.tee $1 - local.get $5 - local.get $1 - local.get $5 - i32.gt_u - select - local.set $5 - end + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if local.get $2 - i32.const 20 - i32.sub - local.tee $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $5 - i32.ge_u - if - local.get $1 - local.get $5 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $5 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $6 - local.get $5 - local.get $1 - i32.load offset=16 - local.tee $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store + loop $for-loop|1 local.get $1 - local.get $5 - i32.gt_u - select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 + i32.extend8_s + i32.const 100 + i32.lt_s + if local.get $2 - local.get $6 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + i32.load local.get $2 + i32.load offset=4 local.get $1 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $2 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.lt_u - if - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $2 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 if - local.get $1 + local.get $0 + i32.load offset=8 local.tee $3 i32.const 1 - i32.add - local.set $1 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $7 - i32.add - i32.const 7 i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add + if (result i32) + i32.const 0 + else + local.get $0 i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $7 - i32.const 8 - i32.sub - local.tee $7 local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 + i32.const 255 + i32.and + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end - loop $while-continue|5 - local.get $7 - if - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + i32.const 0 + local.set $0 end - end - local.get $6 - end - local.tee $1 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 - if local.get $0 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $7 - i32.ne - if - local.get $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.extend8_s + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $2 - local.get $5 i32.load - local.tee $8 - i32.store local.get $2 - local.get $5 i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $8 + local.get $0 i32.const -1028477379 i32.mul - i32.const 374761397 + i32.const 374761394 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.get $1 i32.and i32.const 2 i32.shl - local.get $4 i32.add - local.tee $8 i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store + local.set $0 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|02 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.const 12 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend8_s + i32.const 10 i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $5 - i32.const 12 - i32.add - local.set $5 - br $while-continue|0 end - end - local.get $0 - local.get $4 - i32.store - local.get $4 - if - local.get $0 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $0 - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 local.get $1 + i32.extend8_s + i32.const 100 + i32.lt_s if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $1 - i32.load offset=8 - local.tee $3 - i32.const 1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor i32.and - if (result i32) + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|05 + end + end i32.const 0 - else - local.get $1 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend8_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.extend8_s + local.tee $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor i32.and - local.set $1 - br $while-continue|0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|08 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend8_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end end - i32.const 0 - local.set $1 - end - local.get $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + local.get $2 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 4 - i32.div_s + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s - else + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - end - if - local.get $0 - local.get $1 - call $~lib/map/Map#rehash - end - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $1 - if + i32.store + local.get $2 + i32.load offset=8 + local.set $3 + local.get $2 + i32.load offset=16 + local.set $4 local.get $0 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $1 - if + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store + local.get $12 + i32.const 0 + i32.store + local.get $12 + i32.const 0 + i32.store offset=4 + local.get $12 + i32.const 0 + i32.store offset=8 + local.get $12 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $12 + local.get $6 + i32.store + local.get $6 + if + local.get $12 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $6 + i32.store offset=4 + local.get $12 + local.get $5 + i32.store offset=8 + local.get $12 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - local.get $4 - if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=8 + local.get $12 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $4 + local.get $11 + i32.gt_s if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 - i32.store - loop $for-loop|1 - local.get $2 - i32.extend8_s - i32.const 100 - i32.lt_s + local.get $11 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if + local.get $12 + local.get $0 local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|0 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.extend8_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|02 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend8_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|1 + local.set $0 end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|0 end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.extend8_s - i32.const 100 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend8_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.extend8_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 + end + local.get $12 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $12 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $12 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/map/Map#values + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store + local.get $13 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 3 + i32.store offset=4 + local.get $13 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 4 + i32.store offset=12 + local.get $13 + i32.const 0 + i32.store offset=16 + local.get $13 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $11 + loop $for-loop|4 + local.get $12 + i32.load offset=12 + local.get $11 + i32.gt_s + if + local.get $12 + i32.load offset=12 + local.get $11 + i32.le_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + i32.load offset=4 + i32.add + i32.load8_s + local.set $14 + local.get $6 + local.get $11 + call $~lib/array/Array#__get + local.set $7 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $14 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $14 + i32.const 255 i32.and - local.set $4 - br $while-continue|08 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|011 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend8_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 + i32.const 0 + local.set $0 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $6 - local.get $5 - i32.load offset=16 - local.set $7 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $4 - local.get $9 - i32.store - local.get $9 - if - local.get $4 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $8 - i32.store offset=8 - local.get $4 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $4 - i32.store - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s + local.get $0 + i32.eqz if - local.get $1 - i32.const 12 - i32.mul - local.get $6 - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $4 - local.get $0 - local.get $3 - i32.load8_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end - end - local.get $4 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $4 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - local.get $6 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 3 - i32.store offset=4 - local.get $6 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 4 - i32.store offset=12 - local.get $6 - i32.const 0 - i32.store offset=16 - local.get $6 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $4 - i32.load offset=12 - local.get $1 - i32.gt_s - if - local.get $4 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $4 - i32.load offset=4 - i32.add - i32.load8_s - local.set $7 - local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $14 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $7 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $7 + i32.const 20 + i32.sub + local.tee $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 i32.and - local.set $2 - br $while-continue|011 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|014 end - i32.const 0 - local.set $2 end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $14 - i32.const 20 - i32.sub - local.tee $2 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 0 local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $13 + i32.load + local.get $14 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + local.tee $5 + local.get $13 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $0 + if local.get $0 - if + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $3 - i32.const -2 + i32.load8_u + local.get $14 + i32.const 255 i32.and - local.set $0 - br $while-continue|014 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $6 - local.tee $3 - i32.load - local.get $7 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + local.set $0 + end + local.get $0 + if local.get $0 - i32.const 16 - i32.shr_u - i32.xor - local.tee $12 - local.get $3 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $2 + local.get $14 + i32.store8 offset=1 + else + local.get $13 + i32.load offset=16 + local.get $13 + i32.load offset=12 + i32.eq + if + local.get $13 + i32.load offset=20 + local.get $13 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $13 + i32.load offset=4 + else + local.get $13 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $15 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $4 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $13 + i32.load offset=8 + local.tee $10 + local.get $13 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $3 + local.get $1 + local.set $0 + loop $while-continue|00 + local.get $3 + local.get $10 + i32.ne if - local.get $2 - local.tee $0 + local.get $10 i32.load offset=4 - local.tee $2 i32.const 1 i32.and - if (result i32) - i32.const 0 - else + i32.eqz + if local.get $0 - i32.load8_u - local.get $7 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $2 - br $while-continue|015 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - if - local.get $0 - local.get $7 - i32.store8 offset=1 - else - local.get $3 - i32.load offset=16 - local.get $3 - i32.load offset=12 - i32.eq - if - local.get $3 - local.tee $2 - i32.load offset=20 - local.get $3 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $2 - i32.load offset=4 - else - local.get $2 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $16 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $11 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store offset=4 - local.get $2 - i32.load offset=8 - local.tee $17 - local.get $2 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $9 - local.set $0 - loop $while-continue|00 - local.get $10 - local.get $17 - i32.ne - if - local.get $17 - i32.load offset=4 - i32.const 1 + local.get $10 + i32.load8_s + local.tee $16 + i32.store8 + local.get $0 + local.get $10 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $0 + local.get $16 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + i32.const 15 + i32.shr_u + local.get $16 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + i32.const 13 + i32.shr_u + local.get $16 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + i32.const 16 + i32.shr_u + local.get $16 + i32.xor + local.get $15 i32.and - i32.eqz - if - local.get $0 - local.get $17 - i32.load8_s - local.tee $18 - i32.store8 - local.get $0 - local.get $17 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $0 - local.get $18 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $18 - local.get $18 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $18 - local.get $18 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $18 - local.get $18 - i32.const 16 - i32.shr_u - i32.xor - local.get $16 - i32.and - i32.const 2 - i32.shl - local.get $8 - i32.add - local.tee $18 - i32.load - i32.store offset=4 - local.get $18 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $17 + i32.const 2 + i32.shl + local.get $9 + i32.add + local.tee $16 + i32.load + i32.store offset=4 + local.get $16 + local.get $0 + i32.store + local.get $0 i32.const 8 i32.add - local.set $17 - br $while-continue|00 + local.set $0 end + local.get $10 + i32.const 8 + i32.add + local.set $10 + br $while-continue|00 end - local.get $2 - local.get $8 - i32.store - local.get $8 - if - local.get $3 - local.get $8 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $16 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $9 - if - local.get $3 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $11 - i32.store offset=12 - local.get $3 - local.get $3 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=8 - local.tee $0 + local.get $13 + local.get $9 i32.store - local.get $3 - local.get $3 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 3 - i32.shl - local.get $0 - i32.add - local.tee $0 - local.get $7 - i32.store8 - local.get $0 - local.get $7 - i32.store8 offset=1 - local.get $3 - local.get $3 + local.get $9 + if + local.get $13 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $15 + i32.store offset=4 + local.get $13 + local.get $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $4 + i32.store offset=12 + local.get $13 + local.get $13 i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $12 - i32.and - i32.const 2 - i32.shl + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $0 - i32.store + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $13 + i32.load offset=8 + local.tee $0 + i32.store + local.get $13 + local.get $13 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $1 + i32.const 3 + i32.shl + local.get $0 i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $14 - i32.const 20 - i32.sub local.tee $0 + local.get $14 + i32.store8 local.get $0 - call $~lib/map/Map#set - local.get $1 + local.get $14 + i32.store8 offset=1 + local.get $13 + local.get $13 + i32.load offset=20 i32.const 1 i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.extend8_s - i32.const 50 - i32.lt_s - if - local.get $5 + i32.store offset=20 + local.get $0 + local.get $13 i32.load - local.get $5 + local.get $13 i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|018 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.extend8_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl + local.get $5 + i32.and + i32.const 2 + i32.shl i32.add + local.tee $1 i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|021 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 + local.get $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $7 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|4 end - local.get $5 - i32.load offset=20 + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|6 + local.get $11 + i32.extend8_s i32.const 50 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 i32.extend8_s - i32.const 50 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $3 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 i32.and - local.set $2 - br $while-continue|024 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|018 end - i32.const 0 - local.set $2 end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#get + local.get $11 + i32.extend8_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|021 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|6 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|8 + local.get $11 + i32.extend8_s + i32.const 50 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|024 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + local.get $11 + i32.extend8_s + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|027 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|030 + end end - local.get $5 - local.get $1 - local.get $1 - i32.extend8_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|8 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + i32.store + local.get $6 + if + local.get $0 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u local.get $1 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor + i32.const 255 i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|027 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else local.get $1 - local.tee $0 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u + i32.load8_u local.get $2 - i32.xor + i32.const 255 i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|030 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end + i32.const 0 + local.set $1 end - i32.const 18432 - i32.const 18480 + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 i32.const 1 + i32.shr_u + local.tee $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + call $~lib/map/Map#rehash + end ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5162,80 +4480,187 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $7 - i32.ne + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $3 if - local.get $5 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store + loop $for-loop|1 + local.get $1 + i32.const 255 i32.and - i32.eqz + i32.const 100 + i32.lt_u if local.get $2 - local.get $5 - i32.load8_u - local.tee $8 - i32.store8 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.const 255 + i32.and + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load local.get $2 - local.get $5 i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $8 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761394 @@ -5244,2200 +4669,2425 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.get $1 i32.and i32.const 2 i32.shl - local.get $4 i32.add - local.tee $8 i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $5 - i32.const 12 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $0 - local.get $4 - i32.store - local.get $4 - if - local.get $0 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $0 - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - local.tee $1 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) + local.set $0 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|02 + end + end i32.const 0 - else - local.get $1 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find local.get $0 - i32.const -2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load offset=8 - local.tee $3 i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and + i32.add local.set $1 - br $while-continue|0 + br $for-loop|1 end end - i32.const 0 - local.set $1 - end - local.get $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + local.get $2 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $1 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 + i32.const 100 + i32.ne + if i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - local.get $4 - if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 + i32.const 1568 + i32.const 11 i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=8 - local.get $4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 - i32.store - loop $for-loop|1 local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 i32.const 255 i32.and - i32.const 100 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 i32.and - local.set $4 - br $while-continue|0 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|05 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.const 255 + i32.and + local.tee $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 i32.and - local.set $4 - br $while-continue|02 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|08 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $3 + local.get $2 + i32.load offset=16 + local.set $4 + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 16 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store + local.get $12 + i32.const 0 + i32.store + local.get $12 + i32.const 0 + i32.store offset=4 + local.get $12 + i32.const 0 + i32.store offset=8 + local.get $12 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $12 + local.get $6 + i32.store + local.get $6 + if + local.get $12 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $6 + i32.store offset=4 + local.get $12 + local.get $5 + i32.store offset=8 + local.get $12 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $4 + local.get $11 + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 255 + local.get $11 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 i32.and - i32.const 100 - i32.lt_u + i32.eqz if + local.get $12 + local.get $0 local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 + local.set $0 + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|0 + end + end + local.get $12 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $12 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $12 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/map/Map#values + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store + local.get $13 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 3 + i32.store offset=4 + local.get $13 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 4 + i32.store offset=12 + local.get $13 + i32.const 0 + i32.store offset=16 + local.get $13 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $11 + loop $for-loop|4 + local.get $12 + i32.load offset=12 + local.get $11 + i32.gt_s + if + local.get $12 + i32.load offset=12 + local.get $11 + i32.le_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + i32.load offset=4 + i32.add + i32.load8_u + local.set $14 + local.get $6 + local.get $11 + call $~lib/array/Array#__get + local.set $7 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $14 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $14 + local.get $0 + i32.load8_u + i32.eq end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|011 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 + i32.const 0 + local.set $0 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $6 - local.get $5 - i32.load offset=16 - local.set $7 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $4 - local.get $9 - i32.store - local.get $9 - if - local.get $4 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $8 - i32.store offset=8 - local.get $4 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $4 - i32.store - loop $for-loop|0 - local.get $1 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $7 - i32.lt_s + i32.const 20 + i32.sub + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|014 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz if - local.get $1 - i32.const 12 - i32.mul - local.get $6 - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $4 - local.get $0 - local.get $3 - i32.load8_u - call $~lib/array/Array#__set + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $13 + i32.load + local.get $14 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + local.tee $5 + local.get $13 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 local.get $0 - i32.const 1 - i32.add - local.set $0 + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $14 + local.get $0 + i32.load8_u + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + local.set $0 end - end - local.get $4 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $4 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - local.get $6 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 3 - i32.store offset=4 - local.get $6 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 4 - i32.store offset=12 - local.get $6 - i32.const 0 - i32.store offset=16 - local.get $6 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $4 - i32.load offset=12 - local.get $1 - i32.gt_s + local.get $0 if - local.get $4 + local.get $0 + local.get $14 + i32.store8 offset=1 + else + local.get $13 + i32.load offset=16 + local.get $13 i32.load offset=12 - local.get $1 - i32.le_u + i32.eq if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $4 - i32.load offset=4 - i32.add - i32.load8_u - local.set $7 - local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $14 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $7 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $2 + local.get $13 + i32.load offset=20 + local.get $13 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $13 + i32.load offset=4 + else + local.get $13 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $15 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $4 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $13 + i32.load offset=8 + local.tee $10 + local.get $13 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $3 + local.get $1 + local.set $0 + loop $while-continue|00 + local.get $3 + local.get $10 + i32.ne if - local.get $2 - i32.load offset=8 - local.tee $3 + local.get $10 + i32.load offset=4 i32.const 1 i32.and - if (result i32) - i32.const 0 - else - local.get $2 + i32.eqz + if + local.get $0 + local.get $10 i32.load8_u + local.tee $16 + i32.store8 local.get $0 - i32.const 255 + local.get $10 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $16 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + i32.const 15 + i32.shr_u + local.get $16 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + i32.const 13 + i32.shr_u + local.get $16 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + i32.const 16 + i32.shr_u + local.get $16 + i32.xor + local.get $15 i32.and - i32.eq + i32.const 2 + i32.shl + local.get $9 + i32.add + local.tee $16 + i32.load + i32.store offset=4 + local.get $16 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|011 + local.get $10 + i32.const 8 + i32.add + local.set $10 + br $while-continue|00 end end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $13 + local.get $9 + i32.store + local.get $9 + if + local.get $13 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $15 + i32.store offset=4 + local.get $13 + local.get $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $4 + i32.store offset=12 + local.get $13 + local.get $13 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $14 - i32.const 20 - i32.sub - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.load offset=8 local.tee $0 - i32.const 15 - i32.shr_u + i32.store + local.get $13 + local.get $13 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $1 + i32.const 3 + i32.shl local.get $0 - i32.xor - i32.const -2048144777 - i32.mul + i32.add local.tee $0 - i32.const 13 - i32.shr_u + local.get $14 + i32.store8 local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + local.get $14 + i32.store8 offset=1 + local.get $13 + local.get $13 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 local.get $0 - i32.xor + local.get $13 + i32.load + local.get $13 + i32.load offset=4 + local.get $5 i32.and i32.const 2 i32.shl i32.add + local.tee $1 i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $3 - i32.const -2 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $7 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|4 + end + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|6 + local.get $11 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 i32.and - local.set $0 - br $while-continue|014 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|018 end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $6 - local.tee $3 - i32.load - local.get $7 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - local.tee $12 - local.get $3 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $2 - if - local.get $2 - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const 1 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#get + local.get $11 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $7 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|021 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|6 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|8 + local.get $11 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 i32.and - local.set $2 - br $while-continue|015 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|024 end - i32.const 0 - local.set $0 end - local.get $0 - if - local.get $0 - local.get $7 - i32.store8 offset=1 - else - local.get $3 - i32.load offset=16 - local.get $3 - i32.load offset=12 - i32.eq + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + local.get $11 + i32.const 255 + i32.and + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $1 if - local.get $3 - local.tee $2 - i32.load offset=20 - local.get $3 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and if (result i32) - local.get $2 - i32.load offset=4 + i32.const 0 else - local.get $2 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq end - local.set $16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $16 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer + br_if $__inlined_func$~lib/map/Map#find26 local.get $0 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $11 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store offset=4 - local.get $2 - i32.load offset=8 - local.tee $17 - local.get $2 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $9 - local.set $0 - loop $while-continue|00 - local.get $10 - local.get $17 - i32.ne - if - local.get $17 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $17 - i32.load8_u - local.tee $18 - i32.store8 - local.get $0 - local.get $17 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $18 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $18 - local.get $18 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $18 - local.get $18 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $18 - local.get $18 - i32.const 16 - i32.shr_u - i32.xor - local.get $16 - i32.and - i32.const 2 - i32.shl - local.get $8 - i32.add - local.tee $18 - i32.load - i32.store offset=4 - local.get $18 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $17 - i32.const 8 - i32.add - local.set $17 - br $while-continue|00 - end - end - local.get $2 - local.get $8 - i32.store - local.get $8 - if - local.get $3 - local.get $8 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $16 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $9 - if - local.get $3 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $11 - i32.store offset=12 - local.get $3 - local.get $3 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -2 + i32.and + local.set $1 + br $while-continue|027 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $11 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|030 end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=8 - local.tee $0 - i32.store - local.get $3 - local.get $3 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 3 - i32.shl - local.get $0 - i32.add - local.tee $0 - local.get $7 - i32.store8 - local.get $0 - local.get $7 - i32.store8 offset=1 - local.get $3 - local.get $3 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $12 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $0 - i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $14 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|4 end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|8 end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $8 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + i32.store + local.get $6 + if + local.get $0 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 255 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.const 50 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|018 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u local.get $1 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor + i32.const 65535 i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|021 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 local.get $1 - i32.const 255 + i32.load offset=8 + local.tee $3 + i32.const 1 i32.and - i32.const 50 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|024 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 + if (result i32) + i32.const 0 + else local.get $1 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u + i32.load16_u local.get $2 - i32.xor + i32.const 65535 i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $3 - i32.const -2 + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store + loop $for-loop|1 + local.get $1 + i32.extend16_s + i32.const 100 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $2 - br $while-continue|027 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $3 - i32.const -2 + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.extend16_s + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $2 - br $while-continue|030 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|02 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 + i32.const 0 + local.set $0 end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend16_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end - end - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $7 + local.get $2 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.extend16_s + i32.const 100 + i32.lt_s if local.get $2 - local.get $5 - i32.load16_s - local.tee $8 - i32.store16 + i32.load local.get $2 - local.get $5 i32.load offset=4 - i32.store offset=4 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|05 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.get $8 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend16_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 i32.extend16_s + local.tee $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761395 @@ -7446,2128 +7096,1362 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.get $1 i32.and i32.const 2 i32.shl - local.get $4 i32.add - local.tee $8 i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store + local.set $0 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|08 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.const 12 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend16_s + i32.const 20 i32.add - local.set $2 - end - local.get $5 - i32.const 12 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $0 - local.get $4 - i32.store - local.get $4 - if - local.get $0 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $0 - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - local.tee $1 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) + i32.ne + if i32.const 0 - else - local.get $1 - i32.load16_u - local.get $2 - i32.const 65535 - i32.and - i32.eq + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable end - br_if $__inlined_func$~lib/map/Map#find - local.get $0 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - local.set $1 - end - local.get $1 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $3 + local.get $2 + i32.load offset=16 + local.set $4 + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store + local.get $12 + i32.const 0 + i32.store + local.get $12 + i32.const 0 + i32.store offset=4 + local.get $12 + i32.const 0 + i32.store offset=8 + local.get $12 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 536870910 + i32.gt_u if - i32.const 1248 + i32.const 1456 i32.const 1728 - i32.const 130 - i32.const 22 + i32.const 70 + i32.const 60 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select i32.const 1 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $12 + local.get $6 + i32.store + local.get $6 + if + local.get $12 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $6 + i32.store offset=4 + local.get $12 + local.get $5 + i32.store offset=8 + local.get $12 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $3 - i32.const 1 - i32.const 1 - call $~lib/array/ensureCapacity + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 + local.get $12 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $4 + local.get $11 + i32.gt_s if - local.get $1 + local.get $11 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $5 i32.load offset=8 - local.tee $3 i32.const 1 i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load16_u - local.get $2 - i32.const 65535 - i32.and - i32.eq + i32.eqz + if + local.get $12 + local.get $0 + local.get $5 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|0 end end - i32.const 0 - local.set $1 - end - local.get $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $12 local.get $0 - i32.load offset=20 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $12 local.get $0 - i32.load offset=12 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $12 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/map/Map#values + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store + local.get $13 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 i32.const 3 - i32.mul + i32.store offset=4 + local.get $13 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 4 + i32.store offset=12 + local.get $13 + i32.const 0 + i32.store offset=16 + local.get $13 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.div_s - i32.lt_s - else + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $8 + i32.store offset=16 i32.const 0 - end - if - local.get $0 - local.get $1 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - local.get $4 - if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=8 - local.get $4 + local.set $11 + loop $for-loop|4 + local.get $12 + i32.load offset=12 + local.get $11 + i32.gt_s if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 - i32.store - loop $for-loop|1 + local.get $12 + i32.load offset=12 + local.get $11 + i32.le_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $12 + i32.load offset=4 + local.get $11 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $14 + local.get $6 + local.get $11 + call $~lib/array/Array#__get + local.set $7 + local.get $2 + i32.load local.get $2 + i32.load offset=4 + local.get $14 i32.extend16_s - i32.const 100 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $14 + i32.const 65535 i32.and - local.set $4 - br $while-continue|0 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|011 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $2 - local.get $2 - i32.extend16_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $7 + i32.const 20 + i32.sub + local.tee $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $4 - br $while-continue|02 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|014 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend16_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + local.set $0 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 + i32.store + local.get $13 + i32.load + local.get $14 i32.extend16_s - i32.const 100 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + local.tee $5 + local.get $13 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $14 + i32.const 65535 i32.and - local.set $4 - br $while-continue|05 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend16_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $2 - local.get $2 - i32.extend16_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $14 + i32.store16 offset=2 + else + local.get $13 + i32.load offset=16 + local.get $13 + i32.load offset=12 + i32.eq + if + local.get $13 + i32.load offset=20 + local.get $13 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $13 + i32.load offset=4 + else + local.get $13 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $15 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $4 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $13 + i32.load offset=8 + local.tee $10 + local.get $13 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $3 + local.get $1 + local.set $0 + loop $while-continue|00 + local.get $3 + local.get $10 + i32.ne if - local.get $4 - i32.load offset=8 - local.tee $6 + local.get $10 + i32.load offset=4 i32.const 1 i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 + i32.eqz + if + local.get $0 + local.get $10 + i32.load16_s + local.tee $16 + i32.store16 + local.get $0 + local.get $10 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $0 + local.get $16 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + i32.const 15 + i32.shr_u + local.get $16 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + i32.const 13 + i32.shr_u + local.get $16 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + i32.const 16 + i32.shr_u + local.get $16 + i32.xor + local.get $15 i32.and - i32.eq + i32.const 2 + i32.shl + local.get $9 + i32.add + local.tee $16 + i32.load + i32.store offset=4 + local.get $16 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 + local.get $10 + i32.const 8 + i32.add + local.set $10 + br $while-continue|00 end end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend16_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $6 - local.get $5 - i32.load offset=16 - local.set $7 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 16 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $4 - local.get $9 - i32.store - local.get $9 - if - local.get $4 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $8 - i32.store offset=8 - local.get $4 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $4 - i32.store - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $1 - i32.const 12 - i32.mul - local.get $6 - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if + local.get $13 + local.get $9 + i32.store + local.get $9 + if + local.get $13 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $15 + i32.store offset=4 + local.get $13 + local.get $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 local.get $4 - local.get $0 - local.get $3 - i32.load16_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + i32.store offset=12 + local.get $13 + local.get $13 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $0 + global.set $~lib/memory/__stack_pointer end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.load offset=8 + local.tee $0 + i32.store + local.get $13 + local.get $13 + i32.load offset=16 + local.tee $1 i32.const 1 i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $4 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - local.get $6 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 3 - i32.store offset=4 - local.get $6 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $1 - if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 4 - i32.store offset=12 - local.get $6 - i32.const 0 - i32.store offset=16 - local.get $6 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $4 - i32.load offset=12 - local.get $1 - i32.gt_s - if - local.get $4 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 + i32.store offset=16 local.get $1 - i32.const 1 + i32.const 3 i32.shl + local.get $0 i32.add - i32.load16_s - local.set $7 + local.tee $0 + local.get $14 + i32.store16 + local.get $0 + local.get $14 + i32.store16 offset=2 + local.get $13 + local.get $13 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $14 - local.get $5 i32.load - local.get $5 + local.get $13 i32.load offset=4 - local.get $7 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor + local.get $5 i32.and i32.const 2 i32.shl i32.add + local.tee $1 i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $7 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|4 + end + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|6 + local.get $11 + i32.extend16_s + i32.const 50 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|011 + i32.eq end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $14 - i32.const 20 - i32.sub - local.tee $2 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + br_if $__inlined_func$~lib/map/Map#find17 local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $2 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|014 - end + i32.const -2 + i32.and + local.set $1 + br $while-continue|018 end - i32.const 0 - local.set $0 end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $6 - local.tee $3 - i32.load - local.get $7 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - local.tee $12 - local.get $3 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $2 - if - local.get $2 - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $7 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $2 - br $while-continue|015 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - if - local.get $0 - local.get $7 - i32.store16 offset=2 - else - local.get $3 - i32.load offset=16 - local.get $3 - i32.load offset=12 - i32.eq + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#get + local.get $11 + i32.extend16_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $1 if - local.get $3 - local.tee $2 - i32.load offset=20 - local.get $3 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $2 - i32.load offset=4 - else - local.get $2 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $16 i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $11 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store offset=4 - local.get $2 - i32.load offset=8 - local.tee $17 - local.get $2 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $9 - local.set $0 - loop $while-continue|00 - local.get $10 - local.get $17 - i32.ne - if - local.get $17 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $17 - i32.load16_s - local.tee $18 - i32.store16 - local.get $0 - local.get $17 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $0 - local.get $18 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $18 - local.get $18 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $18 - local.get $18 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $18 - local.get $18 - i32.const 16 - i32.shr_u - i32.xor - local.get $16 - i32.and - i32.const 2 - i32.shl - local.get $8 - i32.add - local.tee $18 - i32.load - i32.store offset=4 - local.get $18 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $17 - i32.const 8 - i32.add - local.set $17 - br $while-continue|00 - end - end - local.get $2 - local.get $8 - i32.store - local.get $8 - if - local.get $3 - local.get $8 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $16 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $9 - if - local.get $3 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 + i32.and + i32.eq end - local.get $3 - local.get $11 - i32.store offset=12 - local.get $3 - local.get $3 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + br_if $__inlined_func$~lib/map/Map#find20 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|021 end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=8 - local.tee $0 - i32.store - local.get $3 - local.get $3 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 3 - i32.shl - local.get $0 - i32.add - local.tee $0 - local.get $7 - i32.store16 - local.get $0 - local.get $7 - i32.store16 offset=2 - local.get $3 - local.get $3 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $12 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $0 - i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $14 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|4 end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|6 end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|8 + local.get $11 + i32.extend16_s + i32.const 50 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 i32.extend16_s - i32.const 50 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|018 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.extend16_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $3 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|021 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|024 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|6 end - end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 local.get $1 - i32.extend16_s - i32.const 50 - i32.lt_s if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|024 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - local.get $1 - i32.extend16_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $3 - i32.const -2 + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + local.get $11 + i32.extend16_s + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|027 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|027 end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $3 - i32.const -2 + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|030 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|030 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|8 end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|8 end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end i32.const 18432 i32.const 18480 @@ -9611,7 +8495,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9619,7 +8503,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9627,33 +8511,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $7 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $7 i32.load16_u local.tee $8 i32.store16 local.get $2 - local.get $5 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 @@ -9689,7 +8573,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add local.tee $8 i32.load @@ -9702,20 +8586,20 @@ i32.add local.set $2 end - local.get $5 + local.get $7 i32.const 12 i32.add - local.set $5 + local.set $7 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $6 i32.store - local.get $4 + local.get $6 if local.get $0 - local.get $4 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -9731,7 +8615,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -9749,7 +8633,6 @@ local.get $0 i32.load offset=4 local.get $1 - local.tee $2 i32.const 65535 i32.and i32.const -1028477379 @@ -9790,23 +8673,22 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $0 i32.load16_u - local.get $2 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $0 + local.get $2 i32.const -2 i32.and local.set $0 @@ -9814,9 +8696,9 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 1616 @@ -9826,7 +8708,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) @@ -9942,1837 +8824,1806 @@ local.get $0 i32.load offset=12 i32.const 3 - i32.mul + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 - i32.div_s - i32.lt_s - else + i32.store offset=12 + local.get $2 i32.const 0 - end - if + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store - local.get $4 - if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=8 - local.get $4 + local.get $2 + i32.store + loop $for-loop|1 + local.get $1 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u if - local.get $5 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 - i32.store - loop $for-loop|1 local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 i32.const 65535 i32.and - i32.const 100 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $4 - br $while-continue|0 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $4 - br $while-continue|02 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|02 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $5 - i32.load offset=20 + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 65535 + i32.and i32.const 100 - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 i32.const 65535 i32.and - i32.const 100 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|05 + end end - local.get $5 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $4 - br $while-continue|08 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|08 end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 + i32.const 0 + local.set $0 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $6 - local.get $5 - i32.load offset=16 - local.set $7 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 16 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $4 - local.get $9 - i32.store - local.get $9 - if - local.get $4 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $8 - i32.store offset=8 - local.get $4 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $4 - i32.store - loop $for-loop|0 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 local.get $1 - local.get $7 - i32.lt_s + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne if - local.get $1 - i32.const 12 - i32.mul - local.get $6 - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $4 - local.get $0 - local.get $3 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end - local.get $4 - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $4 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $3 + local.get $2 + i32.load offset=16 + local.set $4 + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store + local.get $12 + i32.const 0 + i32.store + local.get $12 + i32.const 0 + i32.store offset=4 + local.get $12 + i32.const 0 + i32.store offset=8 + local.get $12 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 1 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $12 + local.get $6 + i32.store + local.get $6 + if + local.get $12 local.get $6 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $6 + i32.store offset=4 + local.get $12 + local.get $5 + i32.store offset=8 + local.get $12 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $4 + local.get $11 + i32.gt_s if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $11 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $12 + local.get $0 + local.get $5 + i32.load16_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|0 end - local.get $6 - i32.const 3 - i32.store offset=4 - local.get $6 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 + end + local.get $12 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $12 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $12 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/map/Map#values + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store + local.get $13 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 + if + local.get $13 local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 3 + i32.store offset=4 + local.get $13 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + i32.const 4 + i32.store offset=12 + local.get $13 + i32.const 0 + i32.store offset=16 + local.get $13 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $11 + loop $for-loop|4 + local.get $12 + i32.load offset=12 + local.get $11 + i32.gt_s if - local.get $6 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $6 - i32.const 4 - i32.store offset=12 - local.get $6 - i32.const 0 - i32.store offset=16 - local.get $6 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $4 + local.get $12 i32.load offset=12 - local.get $1 - i32.gt_s + local.get $11 + i32.le_u if - local.get $4 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $14 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $7 - local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|011 + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $12 + i32.load offset=4 + local.get $11 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $14 + local.get $6 + local.get $11 + call $~lib/array/Array#__get + local.set $7 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $14 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $14 + local.get $0 + i32.load16_u + i32.eq end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|011 end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $14 - i32.const 20 - i32.sub - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 0 local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $7 + i32.const 20 + i32.sub + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $0 + if local.get $0 - if + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $2 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $3 - i32.const -2 + i32.load16_u + local.get $1 + i32.const 65535 i32.and - local.set $0 - br $while-continue|014 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|014 end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $6 - local.tee $3 - i32.load - local.get $7 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - local.tee $12 - local.get $3 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $2 - if - local.get $2 - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $7 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $2 - br $while-continue|015 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - if + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $13 + i32.load + local.get $14 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + local.tee $5 + local.get $13 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 local.get $0 - local.get $7 - i32.store16 offset=2 - else - local.get $3 - i32.load offset=16 - local.get $3 - i32.load offset=12 - i32.eq if - local.get $3 - local.tee $2 - i32.load offset=20 - local.get $3 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and if (result i32) - local.get $2 - i32.load offset=4 + i32.const 0 else - local.get $2 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $14 + local.get $0 + i32.load16_u + i32.eq end - local.set $16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $16 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $11 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store offset=4 - local.get $2 - i32.load offset=8 - local.tee $17 - local.get $2 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $9 + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and local.set $0 - loop $while-continue|00 - local.get $10 - local.get $17 - i32.ne - if - local.get $17 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $17 - i32.load16_u - local.tee $18 - i32.store16 - local.get $0 - local.get $17 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $0 - local.get $18 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $18 - local.get $18 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $18 - local.get $18 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $18 - local.get $18 - i32.const 16 - i32.shr_u - i32.xor - local.get $16 - i32.and - i32.const 2 - i32.shl - local.get $8 - i32.add - local.tee $18 - i32.load - i32.store offset=4 - local.get $18 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $17 - i32.const 8 - i32.add - local.set $17 - br $while-continue|00 - end - end - local.get $2 - local.get $8 - i32.store - local.get $8 - if - local.get $3 - local.get $8 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $16 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $9 - if - local.get $3 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $11 - i32.store offset=12 - local.get $3 - local.get $3 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $14 + i32.store16 offset=2 + else + local.get $13 + i32.load offset=16 + local.get $13 + i32.load offset=12 + i32.eq + if + local.get $13 + i32.load offset=20 + local.get $13 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $13 + i32.load offset=4 + else + local.get $13 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=8 - local.tee $0 - i32.store - local.get $3 - local.get $3 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 3 - i32.shl - local.get $0 - i32.add local.tee $0 - local.get $7 - i32.store16 + i64.const 0 + i64.store local.get $0 - local.get $7 - i32.store16 offset=2 - local.get $3 - local.get $3 - i32.load offset=20 + local.get $15 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $12 - i32.and + local.tee $0 i32.const 2 i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $14 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $4 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $13 + i32.load offset=8 + local.tee $10 + local.get $13 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $3 + local.get $1 + local.set $0 + loop $while-continue|00 + local.get $3 + local.get $10 + i32.ne if - local.get $2 - i32.load offset=8 - local.tee $3 + local.get $10 + i32.load offset=4 i32.const 1 i32.and - if (result i32) - i32.const 0 - else - local.get $2 + i32.eqz + if + local.get $0 + local.get $10 i32.load16_u + local.tee $16 + i32.store16 + local.get $0 + local.get $10 + i32.load16_u offset=2 + i32.store16 offset=2 local.get $0 - i32.const 65535 + local.get $16 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + i32.const 15 + i32.shr_u + local.get $16 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + i32.const 13 + i32.shr_u + local.get $16 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + i32.const 16 + i32.shr_u + local.get $16 + i32.xor + local.get $15 i32.and - i32.eq + i32.const 2 + i32.shl + local.get $9 + i32.add + local.tee $16 + i32.load + i32.store offset=4 + local.get $16 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|018 + local.get $10 + i32.const 8 + i32.add + local.set $10 + br $while-continue|00 end end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $13 + local.get $9 + i32.store + local.get $9 + if + local.get $13 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $15 + i32.store offset=4 + local.get $13 + local.get $1 + i32.store offset=8 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $4 + i32.store offset=12 + local.get $13 + local.get $13 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $5 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 65535 - i32.and - i32.const 20 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.load offset=8 + local.tee $0 + i32.store + local.get $13 + local.get $13 + i32.load offset=16 + local.tee $1 + i32.const 1 i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 + i32.store offset=16 local.get $1 + i32.const 3 + i32.shl + local.get $0 + i32.add local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 + local.get $14 + i32.store16 + local.get $0 + local.get $14 + i32.store16 offset=2 + local.get $13 + local.get $13 + i32.load offset=20 + i32.const 1 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor + i32.store offset=20 + local.get $0 + local.get $13 + i32.load + local.get $13 + i32.load offset=4 + local.get $5 i32.and i32.const 2 i32.shl i32.add + local.tee $1 i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $7 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|4 + end + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|6 + local.get $11 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $3 - i32.const -2 + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|018 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#get + local.get $11 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|021 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|021 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|6 end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|6 end - local.get $5 - i32.load offset=20 + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $11 + loop $for-loop|8 + local.get $11 + i32.const 65535 + i32.and i32.const 50 - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 i32.const 65535 i32.and - i32.const 50 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $3 - i32.const -2 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|024 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|024 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $5 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $3 - i32.const -2 + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + local.get $11 + i32.const 65535 + i32.and + local.tee $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|027 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|027 end - i32.const 0 - local.set $2 end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $1 - local.tee $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $0 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $3 - i32.const -2 + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $11 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $11 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $11 + i32.const 65535 i32.and - local.set $2 - br $while-continue|030 + i32.eq end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|030 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $1 - i32.const 1 - i32.add + i32.const 0 local.set $1 - br $for-loop|8 end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|8 end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end i32.const 18432 i32.const 18480 @@ -11788,7 +10639,6 @@ local.get $0 i32.load offset=4 local.get $1 - local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11827,21 +10677,20 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 local.get $1 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $0 + local.get $2 i32.const -2 i32.and local.set $0 @@ -11849,9 +10698,9 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 1616 @@ -11861,7 +10710,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) @@ -12009,14 +10858,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 call $~lib/map/Map#constructor local.tee $2 @@ -12446,25 +11290,25 @@ i32.store local.get $2 i32.load offset=8 - local.set $5 + local.set $4 local.get $0 local.get $2 i32.load offset=16 - local.tee $6 + local.tee $5 call $~lib/array/Array#constructor - local.tee $4 + local.tee $6 i32.store i32.const 0 local.set $0 loop $for-loop|02 local.get $3 - local.get $6 + local.get $5 i32.lt_s if local.get $3 i32.const 12 i32.mul - local.get $5 + local.get $4 i32.add local.tee $7 i32.load offset=8 @@ -12472,7 +11316,7 @@ i32.and i32.eqz if - local.get $4 + local.get $6 local.get $0 local.get $7 i32.load @@ -12489,12 +11333,12 @@ br $for-loop|02 end end - local.get $4 + local.get $6 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $4 + local.get $6 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -12502,42 +11346,42 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $4 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 call $~lib/map/Map#values - local.tee $6 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $8 + local.tee $9 i32.store offset=16 i32.const 0 local.set $0 loop $for-loop|2 - local.get $4 + local.get $6 i32.load offset=12 local.get $0 i32.gt_s if - local.get $4 + local.get $6 local.get $0 call $~lib/array/Array#__get - local.set $3 - local.get $6 + local.set $1 + local.get $7 local.get $0 call $~lib/array/Array#__get - local.set $9 + local.set $4 local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12546,22 +11390,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -12570,12 +11414,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -12583,8 +11427,8 @@ if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end @@ -12592,14 +11436,14 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -12613,10 +11457,10 @@ i32.load local.get $2 i32.load offset=4 - local.get $9 + local.get $4 i32.const 20 i32.sub - local.tee $10 + local.tee $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12625,22 +11469,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -12649,36 +11493,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 - local.tee $5 + local.tee $10 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $10 - local.get $1 + local.get $5 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $5 + local.get $10 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -12688,12 +11532,12 @@ call $~lib/builtins/abort unreachable end - local.get $7 - local.get $3 - local.get $3 - call $~lib/map/Map#set local.get $8 + local.get $1 + local.get $1 + call $~lib/map/Map#set local.get $9 + local.get $4 i32.const 20 i32.sub local.tee $1 @@ -12706,7 +11550,7 @@ br $for-loop|2 end end - local.get $7 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -12718,7 +11562,7 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -13246,7 +12090,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13254,7 +12098,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13262,33 +12106,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $7 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $7 i32.load local.tee $8 i32.store local.get $2 - local.get $5 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 @@ -13324,7 +12168,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add local.tee $8 i32.load @@ -13337,20 +12181,20 @@ i32.add local.set $2 end - local.get $5 + local.get $7 i32.const 12 i32.add - local.set $5 + local.set $7 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $6 i32.store - local.get $4 + local.get $6 if local.get $0 - local.get $4 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -13366,7 +12210,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -13384,7 +12228,6 @@ local.get $0 i32.load offset=4 local.get $1 - local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13423,21 +12266,20 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 local.get $1 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $0 + local.get $2 i32.const -2 i32.and local.set $0 @@ -13445,9 +12287,9 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 1616 @@ -13457,7 +12299,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) @@ -13610,16 +12452,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $0 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13628,66 +12465,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $2 i32.store - local.get $12 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store local.get $3 if - local.get $12 + local.get $2 local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 + local.get $2 i32.const 3 i32.store offset=4 - local.get $12 + local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store offset=8 local.get $3 if - local.get $12 + local.get $2 local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 + local.get $2 i32.const 4 i32.store offset=12 - local.get $12 + local.get $2 i32.const 0 i32.store offset=16 - local.get $12 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $2 - local.get $12 i32.store loop $for-loop|0 - local.get $0 + local.get $1 i32.const 100 i32.lt_u if - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13696,22 +12533,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -13720,12 +12557,12 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 local.tee $3 i32.const 1 @@ -13733,8 +12570,8 @@ if (result i32) i32.const 0 else + local.get $1 local.get $0 - local.get $2 i32.load i32.eq end @@ -13742,14 +12579,14 @@ local.get $3 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 if i32.const 0 i32.const 1568 @@ -13758,17 +12595,17 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 - local.get $0 + local.get $2 + local.get $1 + local.get $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13777,22 +12614,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -13801,12 +12638,12 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 local.tee $3 i32.const 1 @@ -13814,8 +12651,8 @@ if (result i32) i32.const 0 else + local.get $1 local.get $0 - local.get $2 i32.load i32.eq end @@ -13823,14 +12660,14 @@ local.get $3 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|02 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -13840,10 +12677,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $1 call $~lib/map/Map#get - local.get $0 + local.get $1 i32.const 10 i32.add i32.ne @@ -13855,14 +12692,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $12 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13875,17 +12712,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 100 i32.lt_u if - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13894,22 +12731,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -13918,12 +12755,12 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 local.tee $3 i32.const 1 @@ -13931,8 +12768,8 @@ if (result i32) i32.const 0 else + local.get $1 local.get $0 - local.get $2 i32.load i32.eq end @@ -13940,14 +12777,14 @@ local.get $3 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|05 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -13957,10 +12794,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $1 call $~lib/map/Map#get - local.get $0 + local.get $1 i32.const 10 i32.add i32.ne @@ -13972,17 +12809,17 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 - local.get $0 + local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.add call $~lib/map/Map#set - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13991,22 +12828,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -14015,12 +12852,12 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 local.tee $3 i32.const 1 @@ -14028,8 +12865,8 @@ if (result i32) i32.const 0 else + local.get $1 local.get $0 - local.get $2 i32.load i32.eq end @@ -14037,14 +12874,14 @@ local.get $3 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|08 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -14054,10 +12891,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $1 call $~lib/map/Map#get - local.get $0 + local.get $1 i32.const 20 i32.add i32.ne @@ -14069,14 +12906,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $12 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14089,7 +12926,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14101,12 +12938,12 @@ local.tee $0 i32.const 0 i32.store - local.get $12 + local.get $2 i32.load offset=8 - local.set $4 - local.get $12 + local.set $3 + local.get $2 i32.load offset=16 - local.set $5 + local.set $4 local.get $0 i32.const 8 i32.sub @@ -14116,28 +12953,28 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $12 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store offset=4 - local.get $2 + local.get $12 i32.const 0 i32.store offset=8 - local.get $2 + local.get $12 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -14149,96 +12986,96 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 8 - local.get $5 + local.get $4 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $6 i32.store offset=4 - local.get $2 - local.get $7 + local.get $12 + local.get $6 i32.store - local.get $7 + local.get $6 if - local.get $2 - local.get $7 + local.get $12 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 - local.get $7 - i32.store offset=4 - local.get $2 + local.get $12 local.get $6 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $12 local.get $5 + i32.store offset=8 + local.get $12 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $12 i32.store i32.const 0 local.set $0 loop $for-loop|02 - local.get $0 - local.get $5 - i32.lt_s + local.get $4 + local.get $11 + i32.gt_s if - local.get $0 + local.get $11 i32.const 12 i32.mul - local.get $4 + local.get $3 i32.add - local.tee $6 + local.tee $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 - local.get $1 - local.get $6 + local.get $12 + local.get $0 + local.get $5 i32.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $0 + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 br $for-loop|02 end end - local.get $2 - local.get $1 + local.get $12 + local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 - local.get $1 + local.get $12 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 + local.get $1 + local.get $12 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $2 call $~lib/map/Map#values local.tee $6 i32.store offset=8 @@ -14303,21 +13140,20 @@ i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $14 + local.tee $8 i32.store offset=16 i32.const 0 - local.set $0 + local.set $11 loop $for-loop|2 - local.get $2 + local.get $12 i32.load offset=12 - local.get $0 + local.get $11 i32.gt_s if - local.get $0 - local.tee $3 - local.get $2 + local.get $12 i32.load offset=12 - i32.ge_u + local.get $11 + i32.le_u if i32.const 1248 i32.const 1728 @@ -14326,23 +13162,23 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $12 i32.load offset=4 - local.get $3 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $15 + local.set $14 local.get $6 - local.get $3 + local.get $11 call $~lib/array/Array#__get - local.set $5 - local.get $12 + local.set $7 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $15 + local.get $14 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14388,7 +13224,7 @@ if (result i32) i32.const 0 else - local.get $15 + local.get $14 local.get $0 i32.load i32.eq @@ -14414,11 +13250,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $5 + local.get $7 i32.const 20 i32.sub local.tee $1 @@ -14461,7 +13297,7 @@ if local.get $0 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -14473,7 +13309,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $4 + local.get $3 i32.const -2 i32.and local.set $0 @@ -14506,7 +13342,7 @@ i32.store local.get $13 i32.load - local.get $15 + local.get $14 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14534,7 +13370,7 @@ i32.shr_u local.get $0 i32.xor - local.tee $7 + local.tee $5 local.get $13 i32.load offset=4 i32.and @@ -14548,21 +13384,20 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $15 - local.get $1 + local.get $14 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find15 - local.get $0 + local.get $1 i32.const -2 i32.and local.set $0 @@ -14570,12 +13405,12 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 - local.get $15 + local.get $0 + local.get $14 i32.store offset=4 else local.get $13 @@ -14604,7 +13439,7 @@ i32.const 1 i32.or end - local.set $10 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14618,14 +13453,14 @@ i64.const 0 i64.store local.get $0 - local.get $10 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -14633,7 +13468,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $4 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -14641,33 +13476,33 @@ i32.store offset=4 local.get $13 i32.load offset=8 - local.tee $4 + local.tee $10 local.get $13 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $9 + local.set $3 local.get $1 local.set $0 loop $while-continue|00 - local.get $4 - local.get $9 + local.get $3 + local.get $10 i32.ne if - local.get $4 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $10 i32.load local.tee $16 i32.store local.get $0 - local.get $4 + local.get $10 i32.load offset=4 i32.store offset=4 local.get $0 @@ -14699,11 +13534,11 @@ i32.shr_u local.get $16 i32.xor - local.get $10 + local.get $15 i32.and i32.const 2 i32.shl - local.get $11 + local.get $9 i32.add local.tee $16 i32.load @@ -14716,24 +13551,24 @@ i32.add local.set $0 end - local.get $4 + local.get $10 i32.const 12 i32.add - local.set $4 + local.set $10 br $while-continue|00 end end local.get $13 - local.get $11 + local.get $9 i32.store - local.get $11 + local.get $9 if local.get $13 - local.get $11 + local.get $9 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $13 - local.get $10 + local.get $15 i32.store offset=4 local.get $13 local.get $1 @@ -14745,7 +13580,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $13 - local.get $8 + local.get $4 i32.store offset=12 local.get $13 local.get $13 @@ -14774,10 +13609,10 @@ local.get $0 i32.add local.tee $0 - local.get $15 + local.get $14 i32.store local.get $0 - local.get $15 + local.get $14 i32.store offset=4 local.get $13 local.get $13 @@ -14790,7 +13625,7 @@ i32.load local.get $13 i32.load offset=4 - local.get $7 + local.get $5 i32.and i32.const 2 i32.shl @@ -14806,17 +13641,17 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - local.get $5 + local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $3 + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 br $for-loop|2 end end @@ -14832,7 +13667,7 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -14845,17 +13680,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $11 loop $for-loop|3 - local.get $0 + local.get $11 i32.const 50 i32.lt_u if - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14864,22 +13699,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -14888,36 +13723,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $1 block $__inlined_func$~lib/map/Map#find18 loop $while-continue|019 - local.get $2 + local.get $1 if - local.get $2 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $2 + local.get $11 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|019 end end i32.const 0 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if i32.const 0 @@ -14927,10 +13762,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $11 call $~lib/map/Map#get - local.get $0 + local.get $11 i32.const 20 i32.add i32.ne @@ -14942,14 +13777,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $11 call $~lib/map/Map#delete - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14958,22 +13793,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -14982,36 +13817,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $1 block $__inlined_func$~lib/map/Map#find21 loop $while-continue|022 - local.get $2 + local.get $1 if - local.get $2 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $2 + local.get $11 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|022 end end i32.const 0 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 if i32.const 0 i32.const 1568 @@ -15020,14 +13855,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 br $for-loop|3 end end - local.get $12 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -15040,17 +13875,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $11 loop $for-loop|4 - local.get $0 + local.get $11 i32.const 50 i32.lt_u if - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15059,22 +13894,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15083,36 +13918,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $1 block $__inlined_func$~lib/map/Map#find24 loop $while-continue|025 - local.get $2 + local.get $1 if - local.get $2 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $2 + local.get $11 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|025 end end i32.const 0 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 if i32.const 0 i32.const 1568 @@ -15121,17 +13956,17 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 - local.get $0 + local.get $2 + local.get $11 + local.get $11 i32.const 10 i32.add call $~lib/map/Map#set - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15140,22 +13975,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15164,36 +13999,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $1 block $__inlined_func$~lib/map/Map#find27 loop $while-continue|028 - local.get $2 + local.get $1 if - local.get $2 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $2 + local.get $11 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|028 end end i32.const 0 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if i32.const 0 @@ -15203,14 +14038,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 - local.get $0 + local.get $2 + local.get $11 call $~lib/map/Map#delete - local.get $12 + local.get $2 i32.load - local.get $12 + local.get $2 i32.load offset=4 - local.get $0 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15219,22 +14054,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15243,36 +14078,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $1 block $__inlined_func$~lib/map/Map#find30 loop $while-continue|031 - local.get $2 + local.get $1 if - local.get $2 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $2 + local.get $11 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|031 end end i32.const 0 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 if i32.const 0 i32.const 1568 @@ -15281,14 +14116,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 br $for-loop|4 end end - local.get $12 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -15300,9 +14135,9 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $2 call $~lib/map/Map#clear - local.get $12 + local.get $2 i32.load offset=20 if i32.const 0 @@ -15445,7 +14280,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -15453,7 +14288,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $5 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -15461,33 +14296,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $8 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $8 i32.ne if - local.get $5 + local.get $8 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $8 i64.load local.tee $6 i64.store local.get $2 - local.get $5 + local.get $8 i32.load offset=8 i32.store offset=8 local.get $2 @@ -15535,7 +14370,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $7 i32.add local.tee $9 i32.load @@ -15548,20 +14383,20 @@ i32.add local.set $2 end - local.get $5 + local.get $8 i32.const 16 i32.add - local.set $5 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $7 i32.store - local.get $4 + local.get $7 if local.get $0 - local.get $4 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -15577,7 +14412,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -15893,8 +14728,8 @@ (func $std/map/testNumeric (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -15903,11 +14738,11 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) (local $14 i32) (local $15 i32) - (local $16 i64) + (local $16 i32) (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 @@ -15919,16 +14754,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $3 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -15944,56 +14774,56 @@ i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $9 i32.store - local.get $10 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $4 i32.store local.get $4 if - local.get $10 + local.get $9 local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $9 i32.const 3 i32.store offset=4 - local.get $10 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $4 i32.store offset=8 local.get $4 if - local.get $10 + local.get $9 local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $9 i32.const 4 i32.store offset=12 - local.get $10 + local.get $9 i32.const 0 i32.store offset=16 - local.get $10 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $10 + local.get $3 + local.get $9 i32.store loop $for-loop|0 - local.get $3 + local.get $2 i64.const 100 i64.lt_s if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -16003,15 +14833,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -16022,10 +14852,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 10 i32.add @@ -16038,14 +14868,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -16058,14 +14888,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|1 - local.get $3 + local.get $2 i64.const 100 i64.lt_s if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -16076,10 +14906,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 10 i32.add @@ -16092,15 +14922,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -16111,10 +14941,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 20 i32.add @@ -16127,14 +14957,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|1 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -16147,7 +14977,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16159,10 +14989,10 @@ local.tee $4 i32.const 0 i32.store - local.get $10 + local.get $9 i32.load offset=8 local.set $5 - local.get $10 + local.get $9 i32.load offset=16 local.set $6 local.get $4 @@ -16174,25 +15004,25 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $8 i64.const 0 i64.store - local.get $7 + local.get $8 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $10 i32.store - local.get $11 + local.get $10 i32.const 0 i32.store - local.get $11 + local.get $10 i32.const 0 i32.store offset=4 - local.get $11 + local.get $10 i32.const 0 i32.store offset=8 - local.get $11 + local.get $10 i32.const 0 i32.store offset=12 local.get $6 @@ -16215,27 +15045,27 @@ select i32.const 3 i32.shl - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $11 i32.store offset=4 + local.get $10 local.get $11 - local.get $8 i32.store - local.get $8 + local.get $11 if + local.get $10 local.get $11 - local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $10 local.get $11 - local.get $8 i32.store offset=4 - local.get $11 - local.get $7 + local.get $10 + local.get $8 i32.store offset=8 - local.get $11 + local.get $10 local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -16243,7 +15073,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $11 + local.get $10 i32.store loop $for-loop|02 local.get $1 @@ -16261,7 +15091,7 @@ i32.and i32.eqz if - local.get $11 + local.get $10 local.get $0 local.get $4 i64.load @@ -16278,25 +15108,25 @@ br $for-loop|02 end end - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $11 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $11 + local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 call $~lib/map/Map#values - local.tee $12 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16315,65 +15145,62 @@ i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $11 i32.store - local.get $13 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store local.get $1 if - local.get $13 + local.get $11 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 + local.get $11 i32.const 3 i32.store offset=4 - local.get $13 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 local.get $1 if - local.get $13 + local.get $11 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 + local.get $11 i32.const 4 i32.store offset=12 - local.get $13 + local.get $11 i32.const 0 i32.store offset=16 - local.get $13 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $14 + local.tee $6 i32.store offset=16 - i32.const 0 - local.set $0 loop $for-loop|2 - local.get $11 + local.get $10 i32.load offset=12 - local.get $0 + local.get $7 i32.gt_s if - local.get $0 - local.tee $1 - local.get $11 + local.get $10 i32.load offset=12 - i32.ge_u + local.get $7 + i32.le_u if i32.const 1248 i32.const 1728 @@ -16382,20 +15209,20 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $10 i32.load offset=4 - local.get $1 + local.get $7 i32.const 3 i32.shl i32.add i64.load - local.set $3 - local.get $12 - local.get $1 + local.set $12 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $15 - local.get $10 - local.get $3 + local.set $5 + local.get $9 + local.get $12 call $~lib/map/Map#has i32.eqz if @@ -16406,8 +15233,8 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $15 + local.get $9 + local.get $5 i32.const 20 i32.sub i64.extend_i32_s @@ -16432,9 +15259,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $13 + local.get $11 i32.load - local.get $3 + local.get $12 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16444,7 +15271,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $3 + local.get $12 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16474,8 +15301,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 - local.get $13 + local.tee $3 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -16489,19 +15316,19 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $12 local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -16514,18 +15341,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $12 i64.store offset=8 else - local.get $13 + local.get $11 i32.load offset=16 - local.get $13 + local.get $11 i32.load offset=12 i32.eq if - local.get $13 + local.get $11 i32.load offset=20 - local.get $13 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -16533,17 +15360,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $13 + local.get $11 i32.load offset=4 else - local.get $13 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $8 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16557,14 +15384,14 @@ i64.const 0 i64.store local.get $0 - local.get $8 + local.get $13 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -16572,45 +15399,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $15 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $13 + local.get $11 i32.load offset=8 - local.tee $4 - local.get $13 + local.tee $8 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $7 - local.get $2 + local.set $16 + local.get $1 local.set $0 loop $while-continue|00 - local.get $4 - local.get $7 + local.get $8 + local.get $16 i32.ne if - local.get $4 + local.get $8 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $8 i64.load - local.tee $16 + local.tee $2 i64.store local.get $0 - local.get $4 + local.get $8 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $16 + local.get $2 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16620,7 +15447,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $16 + local.get $2 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16650,11 +15477,11 @@ i32.const 16 i32.shr_u i32.xor - local.get $8 + local.get $13 i32.and i32.const 2 i32.shl - local.get $9 + local.get $14 i32.add local.tee $17 i32.load @@ -16667,39 +15494,39 @@ i32.add local.set $0 end - local.get $4 + local.get $8 i32.const 24 i32.add - local.set $4 + local.set $8 br $while-continue|00 end end - local.get $13 - local.get $9 + local.get $11 + local.get $14 i32.store - local.get $9 + local.get $14 if - local.get $13 - local.get $9 + local.get $11 + local.get $14 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $11 local.get $13 - local.get $8 i32.store offset=4 - local.get $13 - local.get $2 + local.get $11 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 if - local.get $13 - local.get $2 + local.get $11 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 - local.get $6 + local.get $11 + local.get $15 i32.store offset=12 - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16708,48 +15535,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $1 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $12 i64.store local.get $0 - local.get $3 + local.get $12 i64.store offset=8 - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $13 + local.get $11 i32.load - local.get $13 + local.get $11 i32.load offset=4 - local.get $5 + local.get $3 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=16 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -16757,21 +15584,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - local.get $15 + local.get $6 + local.get $5 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $1 + local.get $7 i32.const 1 i32.add - local.set $0 + local.set $7 br $for-loop|2 end end - local.get $13 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -16783,7 +15610,7 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -16796,14 +15623,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|3 - local.get $3 + local.get $2 i64.const 50 i64.lt_s if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -16814,10 +15641,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 20 i32.add @@ -16830,11 +15657,11 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#delete - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -16844,14 +15671,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|3 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16864,14 +15691,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|4 - local.get $3 + local.get $2 i64.const 50 i64.lt_s if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -16881,15 +15708,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -16900,11 +15727,11 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#delete - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -16914,14 +15741,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|4 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16933,9 +15760,9 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $9 call $~lib/map/Map#clear - local.get $10 + local.get $9 i32.load offset=20 if i32.const 0 @@ -17078,7 +15905,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -17086,7 +15913,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $5 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -17094,33 +15921,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $8 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $8 i32.ne if - local.get $5 + local.get $8 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $8 i64.load local.tee $6 i64.store local.get $2 - local.get $5 + local.get $8 i32.load offset=8 i32.store offset=8 local.get $2 @@ -17168,7 +15995,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $7 i32.add local.tee $9 i32.load @@ -17181,20 +16008,20 @@ i32.add local.set $2 end - local.get $5 + local.get $8 i32.const 16 i32.add - local.set $5 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $7 i32.store - local.get $4 + local.get $7 if local.get $0 - local.get $4 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -17210,7 +16037,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -17450,8 +16277,8 @@ (func $std/map/testNumeric (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -17460,11 +16287,11 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) (local $14 i32) (local $15 i32) - (local $16 i64) + (local $16 i32) (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 @@ -17476,16 +16303,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $3 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17501,56 +16323,56 @@ i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $9 i32.store - local.get $10 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $4 i32.store local.get $4 if - local.get $10 + local.get $9 local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $9 i32.const 3 i32.store offset=4 - local.get $10 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $4 i32.store offset=8 local.get $4 if - local.get $10 + local.get $9 local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $9 i32.const 4 i32.store offset=12 - local.get $10 + local.get $9 i32.const 0 i32.store offset=16 - local.get $10 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $10 + local.get $3 + local.get $9 i32.store loop $for-loop|0 - local.get $3 + local.get $2 i64.const 100 i64.lt_u if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -17560,15 +16382,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -17579,10 +16401,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 10 i32.add @@ -17595,14 +16417,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17615,14 +16437,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|1 - local.get $3 + local.get $2 i64.const 100 i64.lt_u if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -17633,10 +16455,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 10 i32.add @@ -17649,15 +16471,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -17668,10 +16490,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 20 i32.add @@ -17684,14 +16506,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|1 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17704,7 +16526,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17716,10 +16538,10 @@ local.tee $4 i32.const 0 i32.store - local.get $10 + local.get $9 i32.load offset=8 local.set $5 - local.get $10 + local.get $9 i32.load offset=16 local.set $6 local.get $4 @@ -17731,25 +16553,25 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $8 i64.const 0 i64.store - local.get $7 + local.get $8 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $10 i32.store - local.get $11 + local.get $10 i32.const 0 i32.store - local.get $11 + local.get $10 i32.const 0 i32.store offset=4 - local.get $11 + local.get $10 i32.const 0 i32.store offset=8 - local.get $11 + local.get $10 i32.const 0 i32.store offset=12 local.get $6 @@ -17772,27 +16594,27 @@ select i32.const 3 i32.shl - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $11 i32.store offset=4 + local.get $10 local.get $11 - local.get $8 i32.store - local.get $8 + local.get $11 if + local.get $10 local.get $11 - local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $10 local.get $11 - local.get $8 i32.store offset=4 - local.get $11 - local.get $7 + local.get $10 + local.get $8 i32.store offset=8 - local.get $11 + local.get $10 local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -17800,7 +16622,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $11 + local.get $10 i32.store loop $for-loop|02 local.get $1 @@ -17818,7 +16640,7 @@ i32.and i32.eqz if - local.get $11 + local.get $10 local.get $0 local.get $4 i64.load @@ -17835,25 +16657,25 @@ br $for-loop|02 end end - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $11 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $11 + local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 call $~lib/map/Map#values - local.tee $12 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17872,65 +16694,62 @@ i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $11 i32.store - local.get $13 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store local.get $1 if - local.get $13 + local.get $11 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 + local.get $11 i32.const 3 i32.store offset=4 - local.get $13 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 local.get $1 if - local.get $13 + local.get $11 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 + local.get $11 i32.const 4 i32.store offset=12 - local.get $13 + local.get $11 i32.const 0 i32.store offset=16 - local.get $13 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $14 + local.tee $6 i32.store offset=16 - i32.const 0 - local.set $0 loop $for-loop|2 - local.get $11 + local.get $10 i32.load offset=12 - local.get $0 + local.get $7 i32.gt_s if - local.get $0 - local.tee $1 - local.get $11 + local.get $10 i32.load offset=12 - i32.ge_u + local.get $7 + i32.le_u if i32.const 1248 i32.const 1728 @@ -17939,20 +16758,20 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $10 i32.load offset=4 - local.get $1 + local.get $7 i32.const 3 i32.shl i32.add i64.load - local.set $3 - local.get $12 - local.get $1 + local.set $12 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $15 - local.get $10 - local.get $3 + local.set $5 + local.get $9 + local.get $12 call $~lib/map/Map#has i32.eqz if @@ -17963,8 +16782,8 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $15 + local.get $9 + local.get $5 i32.const 20 i32.sub i64.extend_i32_s @@ -17989,9 +16808,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $13 + local.get $11 i32.load - local.get $3 + local.get $12 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18001,7 +16820,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $3 + local.get $12 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18031,8 +16850,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 - local.get $13 + local.tee $3 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -18046,19 +16865,19 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $12 local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -18071,18 +16890,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $12 i64.store offset=8 else - local.get $13 + local.get $11 i32.load offset=16 - local.get $13 + local.get $11 i32.load offset=12 i32.eq if - local.get $13 + local.get $11 i32.load offset=20 - local.get $13 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -18090,17 +16909,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $13 + local.get $11 i32.load offset=4 else - local.get $13 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $8 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -18114,14 +16933,14 @@ i64.const 0 i64.store local.get $0 - local.get $8 + local.get $13 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -18129,45 +16948,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $15 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $13 + local.get $11 i32.load offset=8 - local.tee $4 - local.get $13 + local.tee $8 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $7 - local.get $2 + local.set $16 + local.get $1 local.set $0 loop $while-continue|00 - local.get $4 - local.get $7 + local.get $8 + local.get $16 i32.ne if - local.get $4 + local.get $8 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $8 i64.load - local.tee $16 + local.tee $2 i64.store local.get $0 - local.get $4 + local.get $8 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $16 + local.get $2 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18177,7 +16996,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $16 + local.get $2 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18207,11 +17026,11 @@ i32.const 16 i32.shr_u i32.xor - local.get $8 + local.get $13 i32.and i32.const 2 i32.shl - local.get $9 + local.get $14 i32.add local.tee $17 i32.load @@ -18224,39 +17043,39 @@ i32.add local.set $0 end - local.get $4 + local.get $8 i32.const 24 i32.add - local.set $4 + local.set $8 br $while-continue|00 end end - local.get $13 - local.get $9 + local.get $11 + local.get $14 i32.store - local.get $9 + local.get $14 if - local.get $13 - local.get $9 + local.get $11 + local.get $14 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $11 local.get $13 - local.get $8 i32.store offset=4 - local.get $13 - local.get $2 + local.get $11 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 if - local.get $13 - local.get $2 + local.get $11 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $13 - local.get $6 + local.get $11 + local.get $15 i32.store offset=12 - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18265,48 +17084,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $1 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $12 i64.store local.get $0 - local.get $3 + local.get $12 i64.store offset=8 - local.get $13 - local.get $13 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $13 + local.get $11 i32.load - local.get $13 + local.get $11 i32.load offset=4 - local.get $5 + local.get $3 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=16 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -18314,21 +17133,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - local.get $15 + local.get $6 + local.get $5 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $1 + local.get $7 i32.const 1 i32.add - local.set $0 + local.set $7 br $for-loop|2 end end - local.get $13 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -18340,7 +17159,7 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -18353,14 +17172,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|3 - local.get $3 + local.get $2 i64.const 50 i64.lt_u if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -18371,10 +17190,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.wrap_i64 i32.const 20 i32.add @@ -18387,11 +17206,11 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#delete - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -18401,14 +17220,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|3 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18421,14 +17240,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $2 loop $for-loop|4 - local.get $3 + local.get $2 i64.const 50 i64.lt_u if - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -18438,15 +17257,15 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 - local.get $3 + local.get $9 + local.get $2 + local.get $2 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -18457,11 +17276,11 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#delete - local.get $10 - local.get $3 + local.get $9 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -18471,14 +17290,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i64.const 1 i64.add - local.set $3 + local.set $2 br $for-loop|4 end end - local.get $10 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18490,9 +17309,9 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $9 call $~lib/map/Map#clear - local.get $10 + local.get $9 i32.load offset=20 if i32.const 0 @@ -18518,11 +17337,11 @@ (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -18551,7 +17370,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -18567,37 +17386,37 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $8 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $7 + local.set $5 local.get $3 local.set $2 loop $while-continue|0 local.get $5 - local.get $7 + local.get $8 i32.ne if - local.get $5 + local.get $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $8 f32.load - local.tee $8 + local.tee $4 f32.store local.get $2 - local.get $5 + local.get $8 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $8 + local.get $4 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18630,7 +17449,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $7 i32.add local.tee $9 i32.load @@ -18643,20 +17462,20 @@ i32.add local.set $2 end - local.get $5 + local.get $8 i32.const 12 i32.add - local.set $5 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $7 i32.store - local.get $4 + local.get $7 if local.get $0 - local.get $4 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -18891,9 +17710,9 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) - (local $5 f32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -18916,16 +17735,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $0 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -18934,66 +17748,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $3 + local.get $4 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $10 i32.store - local.get $4 + local.get $10 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 if + local.get $10 local.get $4 - local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $10 i32.const 3 i32.store offset=4 - local.get $4 + local.get $10 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=8 - local.get $3 + local.get $4 if + local.get $10 local.get $4 - local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $10 i32.const 4 i32.store offset=12 - local.get $4 + local.get $10 i32.const 0 i32.store offset=16 - local.get $4 + local.get $10 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 + local.get $0 + local.get $10 i32.store loop $for-loop|0 - local.get $5 + local.get $3 f32.const 100 f32.lt if - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19003,22 +17817,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19027,36 +17841,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $2 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 if i32.const 0 i32.const 1568 @@ -19065,18 +17879,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 - local.get $5 - i32.trunc_f32_s + local.get $10 + local.get $3 + local.get $3 + i32.trunc_sat_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19086,22 +17900,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19110,36 +17924,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 - else - local.get $5 - local.get $2 + else + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|02 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -19149,11 +17963,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#get - local.get $5 - i32.trunc_f32_s + local.get $3 + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -19165,14 +17979,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 f32.const 1 f32.add - local.set $5 + local.set $3 br $for-loop|0 end end - local.get $4 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -19185,17 +17999,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 + local.get $3 f32.const 100 f32.lt if - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19205,22 +18019,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19229,36 +18043,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $2 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|05 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -19268,11 +18082,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#get - local.get $5 - i32.trunc_f32_s + local.get $3 + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -19284,18 +18098,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 - local.get $5 - i32.trunc_f32_s + local.get $10 + local.get $3 + local.get $3 + i32.trunc_sat_f32_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19305,22 +18119,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19329,36 +18143,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $2 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|08 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -19368,11 +18182,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#get - local.get $5 - i32.trunc_f32_s + local.get $3 + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -19384,14 +18198,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 f32.const 1 f32.add - local.set $5 + local.set $3 br $for-loop|1 end end - local.get $4 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -19404,7 +18218,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -19413,16 +18227,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $10 i32.load offset=8 - local.set $7 - local.get $4 + local.set $5 + local.get $10 i32.load offset=16 - local.set $8 - local.get $2 + local.set $6 + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -19431,28 +18245,28 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $7 i64.const 0 i64.store - local.get $3 + local.get $7 i32.const 16 i32.const 27 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 0 i32.store - local.get $3 + local.get $11 i32.const 0 i32.store offset=4 - local.get $3 + local.get $11 i32.const 0 i32.store offset=8 - local.get $3 + local.get $11 i32.const 0 i32.store offset=12 - local.get $8 + local.get $6 i32.const 268435455 i32.gt_u if @@ -19464,74 +18278,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.const 8 - local.get $8 + local.get $6 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $7 i32.const 0 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $8 i32.store offset=4 - local.get $3 - local.get $10 + local.get $11 + local.get $8 i32.store - local.get $10 + local.get $8 if - local.get $3 - local.get $10 + local.get $11 + local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $10 + local.get $11 + local.get $8 i32.store offset=4 - local.get $3 - local.get $9 + local.get $11 + local.get $7 i32.store offset=8 - local.get $3 - local.get $8 + local.get $11 + local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 + local.get $0 + local.get $11 i32.store loop $for-loop|02 - local.get $0 - local.get $8 + local.get $2 + local.get $6 i32.lt_s if - local.get $0 + local.get $2 i32.const 12 i32.mul - local.get $7 + local.get $5 i32.add - local.tee $2 + local.tee $0 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $0 f32.load - local.set $5 + local.set $3 local.get $1 - local.tee $2 + local.tee $0 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $11 i32.load offset=12 - local.get $2 + local.get $0 i32.le_u if - local.get $2 + local.get $0 i32.const 0 i32.lt_s if @@ -19542,53 +18356,53 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $11 + local.get $0 i32.const 1 i32.add - local.tee $9 + local.tee $7 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $3 - local.get $9 + local.get $11 + local.get $7 i32.store offset=12 end - local.get $3 + local.get $11 i32.load offset=4 - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 f32.store end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|02 end end - local.get $3 + local.get $11 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $11 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $3 + local.get $4 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $10 call $~lib/map/Map#values - local.tee $8 + local.tee $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19651,21 +18465,20 @@ i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $10 + local.tee $8 i32.store offset=16 i32.const 0 local.set $1 loop $for-loop|2 - local.get $3 + local.get $11 i32.load offset=12 local.get $1 i32.gt_s if - local.get $1 - local.tee $2 - local.get $3 + local.get $11 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1728 @@ -19674,23 +18487,23 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 i32.load offset=4 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add f32.load - local.set $5 - local.get $8 - local.get $2 + local.set $3 + local.get $6 + local.get $1 call $~lib/array/Array#__get - local.set $9 - local.get $4 + local.set $7 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19724,36 +18537,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|011 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -19763,11 +18576,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $9 + local.get $7 i32.const 20 i32.sub f32.convert_i32_s @@ -19805,36 +18618,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $13 - local.get $1 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|014 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -19857,7 +18670,7 @@ i32.store local.get $12 i32.load - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19886,7 +18699,7 @@ i32.shr_u local.get $0 i32.xor - local.tee $7 + local.tee $5 local.get $12 i32.load offset=4 i32.and @@ -19894,13 +18707,12 @@ i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find15 loop $while-continue|016 - local.get $0 + local.get $2 if - local.get $0 - local.tee $1 + local.get $2 i32.load offset=8 local.tee $0 i32.const 1 @@ -19908,8 +18720,8 @@ if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $2 f32.load f32.eq end @@ -19917,17 +18729,17 @@ local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|016 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 if - local.get $1 - local.get $5 + local.get $2 + local.get $3 f32.store offset=4 else local.get $12 @@ -19985,41 +18797,41 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $4 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=4 local.get $12 i32.load offset=8 - local.tee $11 + local.tee $9 local.get $12 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $16 - local.get $1 + local.get $2 local.set $0 loop $while-continue|00 - local.get $11 + local.get $9 local.get $16 i32.ne if - local.get $11 + local.get $9 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $9 f32.load local.tee $13 f32.store local.get $0 - local.get $11 + local.get $9 f32.load offset=4 f32.store offset=4 local.get $0 @@ -20069,10 +18881,10 @@ i32.add local.set $0 end - local.get $11 + local.get $9 i32.const 12 i32.add - local.set $11 + local.set $9 br $while-continue|00 end end @@ -20089,16 +18901,16 @@ local.get $14 i32.store offset=4 local.get $12 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 + local.get $2 if local.get $12 - local.get $1 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $12 - local.get $6 + local.get $4 i32.store offset=12 local.get $12 local.get $12 @@ -20117,20 +18929,20 @@ local.get $12 local.get $12 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $5 + local.get $3 f32.store local.get $0 - local.get $5 + local.get $3 f32.store offset=4 local.get $12 local.get $12 @@ -20143,15 +18955,15 @@ i32.load local.get $12 i32.load offset=4 - local.get $7 + local.get $5 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -20159,14 +18971,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - local.get $9 + local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $2 + local.get $1 i32.const 1 i32.add local.set $1 @@ -20185,7 +18997,7 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -20198,17 +19010,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $3 loop $for-loop|3 - local.get $5 + local.get $3 f32.const 50 f32.lt if - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20242,36 +19054,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find18 loop $while-continue|019 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|019 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20281,11 +19093,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#get - local.get $5 - i32.trunc_f32_s + local.get $3 + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -20297,14 +19109,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20338,36 +19150,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find21 loop $while-continue|022 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|022 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20376,14 +19188,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 f32.const 1 f32.add - local.set $5 + local.set $3 br $for-loop|3 end end - local.get $4 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -20396,17 +19208,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $3 loop $for-loop|4 - local.get $5 + local.get $3 f32.const 50 f32.lt if - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20440,36 +19252,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find24 loop $while-continue|025 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|025 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20478,18 +19290,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 - local.get $5 - i32.trunc_f32_s + local.get $10 + local.get $3 + local.get $3 + i32.trunc_sat_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20523,36 +19335,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find27 loop $while-continue|028 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|028 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20562,14 +19374,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $10 + local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $10 i32.load - local.get $4 + local.get $10 i32.load offset=4 - local.get $5 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20603,36 +19415,36 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find30 loop $while-continue|031 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|031 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20641,14 +19453,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 f32.const 1 f32.add - local.set $5 + local.set $3 br $for-loop|4 end end - local.get $4 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -20660,9 +19472,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $10 call $~lib/map/Map#clear - local.get $4 + local.get $10 i32.load offset=20 if i32.const 0 @@ -20775,12 +19587,12 @@ (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 i64) + (local $8 i32) + (local $9 i32) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -20809,7 +19621,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -20817,7 +19629,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -20825,39 +19637,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $9 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $7 + local.set $6 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $7 + local.get $6 + local.get $9 i32.ne if - local.get $5 + local.get $9 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $9 f64.load - local.tee $8 + local.tee $5 f64.store local.get $2 - local.get $5 + local.get $9 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $8 + local.get $5 i64.reinterpret_f64 - local.tee $9 + local.tee $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -20867,7 +19679,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $9 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -20901,7 +19713,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $8 i32.add local.tee $10 i32.load @@ -20914,20 +19726,20 @@ i32.add local.set $2 end - local.get $5 + local.get $9 i32.const 16 i32.add - local.set $5 + local.set $9 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $8 i32.store - local.get $4 + local.get $8 if local.get $0 - local.get $4 + local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -20943,7 +19755,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -21190,21 +20002,21 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) + (local $3 i32) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 f64) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) + (local $13 f64) (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 f64) + (local $17 i32) (local $18 i32) global.get $~lib/memory/__stack_pointer i32.const 20 @@ -21216,16 +20028,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $1 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21234,63 +20041,63 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $0 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $18 i32.store - local.get $11 + local.get $18 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 if - local.get $11 - local.get $4 + local.get $18 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $18 i32.const 3 i32.store offset=4 - local.get $11 + local.get $18 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $0 i32.store offset=8 - local.get $4 + local.get $0 if - local.get $11 - local.get $4 + local.get $18 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $18 i32.const 4 i32.store offset=12 - local.get $11 + local.get $18 i32.const 0 i32.store offset=16 - local.get $11 + local.get $18 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $11 + local.get $1 + local.get $18 i32.store loop $for-loop|0 - local.get $3 + local.get $6 f64.const 100 f64.lt if - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -21300,15 +20107,15 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 - local.get $3 - i32.trunc_f64_s + local.get $18 + local.get $6 + local.get $6 + i32.trunc_sat_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -21319,11 +20126,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#get - local.get $3 - i32.trunc_f64_s + local.get $6 + i32.trunc_sat_f64_s i32.const 10 i32.add i32.ne @@ -21335,14 +20142,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 f64.const 1 f64.add - local.set $3 + local.set $6 br $for-loop|0 end end - local.get $11 + local.get $18 i32.load offset=20 i32.const 100 i32.ne @@ -21355,14 +20162,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $6 loop $for-loop|1 - local.get $3 + local.get $6 f64.const 100 f64.lt if - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -21373,11 +20180,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#get - local.get $3 - i32.trunc_f64_s + local.get $6 + i32.trunc_sat_f64_s i32.const 10 i32.add i32.ne @@ -21389,15 +20196,15 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 - local.get $3 - i32.trunc_f64_s + local.get $18 + local.get $6 + local.get $6 + i32.trunc_sat_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -21408,11 +20215,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#get - local.get $3 - i32.trunc_f64_s + local.get $6 + i32.trunc_sat_f64_s i32.const 20 i32.add i32.ne @@ -21424,14 +20231,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 f64.const 1 f64.add - local.set $3 + local.set $6 br $for-loop|1 end end - local.get $11 + local.get $18 i32.load offset=20 i32.const 100 i32.ne @@ -21444,7 +20251,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $9 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21453,16 +20260,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i32.const 0 i32.store - local.get $11 + local.get $18 i32.load offset=8 - local.set $6 - local.get $11 - i32.load offset=16 local.set $7 - local.get $2 + local.get $18 + i32.load offset=16 + local.set $4 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -21471,28 +20278,28 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $0 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $2 i32.store - local.get $12 + local.get $2 i32.const 0 i32.store - local.get $12 + local.get $2 i32.const 0 i32.store offset=4 - local.get $12 + local.get $2 i32.const 0 i32.store offset=8 - local.get $12 + local.get $2 i32.const 0 i32.store offset=12 - local.get $7 + local.get $4 i32.const 134217727 i32.gt_u if @@ -21504,74 +20311,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $4 i32.const 8 - local.get $7 + local.get $4 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $8 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $0 i32.store offset=4 - local.get $12 - local.get $9 + local.get $2 + local.get $0 i32.store - local.get $9 + local.get $0 if - local.get $12 - local.get $9 + local.get $2 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 - local.get $9 + local.get $2 + local.get $0 i32.store offset=4 - local.get $12 - local.get $8 + local.get $2 + local.get $1 i32.store offset=8 - local.get $12 - local.get $7 + local.get $2 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 local.get $2 - local.get $12 i32.store loop $for-loop|02 - local.get $0 - local.get $7 - i32.lt_s + local.get $4 + local.get $11 + i32.gt_s if - local.get $0 + local.get $11 i32.const 4 i32.shl - local.get $6 + local.get $7 i32.add - local.tee $2 + local.tee $0 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $0 f64.load - local.set $3 - local.get $1 - local.tee $2 + local.set $6 + local.get $3 + local.tee $0 i32.const 1 i32.add - local.set $1 - local.get $12 - i32.load offset=12 + local.set $3 local.get $2 + i32.load offset=12 + local.get $0 i32.le_u if - local.get $2 + local.get $0 i32.const 0 i32.lt_s if @@ -21582,53 +20389,53 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $2 + local.get $0 i32.const 1 i32.add - local.tee $8 + local.tee $1 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $12 - local.get $8 + local.get $2 + local.get $1 i32.store offset=12 end - local.get $12 - i32.load offset=4 local.get $2 + i32.load offset=4 + local.get $0 i32.const 3 i32.shl i32.add - local.get $3 + local.get $6 f64.store end - local.get $0 + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 br $for-loop|02 end end - local.get $12 - local.get $1 + local.get $2 + local.get $3 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $12 - local.get $1 + local.get $2 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $12 + local.get $9 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $18 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21640,10 +20447,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.const 31 call $~lib/rt/itcms/__new @@ -21652,12 +20459,12 @@ local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 if local.get $14 - local.get $1 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $14 @@ -21666,12 +20473,12 @@ local.get $14 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 if local.get $14 - local.get $1 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $14 @@ -21691,21 +20498,20 @@ i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $15 + local.tee $9 i32.store offset=16 i32.const 0 - local.set $1 + local.set $3 loop $for-loop|2 - local.get $12 + local.get $2 i32.load offset=12 - local.get $1 + local.get $3 i32.gt_s if - local.get $1 - local.tee $2 - local.get $12 + local.get $2 i32.load offset=12 - i32.ge_u + local.get $3 + i32.le_u if i32.const 1248 i32.const 1728 @@ -21714,20 +20520,20 @@ call $~lib/builtins/abort unreachable end - local.get $12 - i32.load offset=4 local.get $2 + i32.load offset=4 + local.get $3 i32.const 3 i32.shl i32.add f64.load - local.set $3 - local.get $13 - local.get $2 - call $~lib/array/Array#__get - local.set $16 - local.get $11 + local.set $13 + local.get $10 local.get $3 + call $~lib/array/Array#__get + local.set $8 + local.get $18 + local.get $13 call $~lib/map/Map#has i32.eqz if @@ -21738,8 +20544,8 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $16 + local.get $18 + local.get $8 i32.const 20 i32.sub f64.convert_i32_s @@ -21766,7 +20572,7 @@ i32.store local.get $14 i32.load - local.get $3 + local.get $13 i64.reinterpret_f64 local.tee $5 i32.wrap_i64 @@ -21808,7 +20614,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $6 + local.tee $7 local.get $14 i32.load offset=4 i32.and @@ -21816,13 +20622,12 @@ i32.shl i32.add i32.load - local.set $0 + local.set $11 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $0 + local.get $11 if - local.get $0 - local.tee $1 + local.get $11 i32.load offset=16 local.tee $0 i32.const 1 @@ -21830,8 +20635,8 @@ if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $13 + local.get $11 f64.load f64.eq end @@ -21839,17 +20644,17 @@ local.get $0 i32.const -2 i32.and - local.set $0 + local.set $11 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $11 end - local.get $1 + local.get $11 if - local.get $1 - local.get $3 + local.get $11 + local.get $13 f64.store offset=8 else local.get $14 @@ -21878,7 +20683,7 @@ i32.const 1 i32.or end - local.set $9 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21892,14 +20697,14 @@ i64.const 0 i64.store local.get $0 - local.get $9 + local.get $12 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -21907,7 +20712,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $16 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -21915,37 +20720,37 @@ i32.store offset=4 local.get $14 i32.load offset=8 - local.tee $4 + local.tee $17 local.get $14 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 + local.set $15 local.get $1 local.set $0 loop $while-continue|00 - local.get $4 - local.get $8 + local.get $15 + local.get $17 i32.ne if - local.get $4 + local.get $17 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $17 f64.load - local.tee $17 + local.tee $6 f64.store local.get $0 - local.get $4 + local.get $17 f64.load offset=8 f64.store offset=8 local.get $0 - local.get $17 + local.get $6 i64.reinterpret_f64 local.tee $5 i32.wrap_i64 @@ -21968,35 +20773,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $18 - local.get $18 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $18 - local.get $18 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $18 - local.get $18 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor - local.get $9 + local.get $12 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $18 + local.tee $4 i32.load i32.store offset=16 - local.get $18 + local.get $4 local.get $0 i32.store local.get $0 @@ -22004,24 +20809,24 @@ i32.add local.set $0 end - local.get $4 + local.get $17 i32.const 24 i32.add - local.set $4 + local.set $17 br $while-continue|00 end end local.get $14 - local.get $10 + local.get $11 i32.store - local.get $10 + local.get $11 if local.get $14 - local.get $10 + local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $14 - local.get $9 + local.get $12 i32.store offset=4 local.get $14 local.get $1 @@ -22033,7 +20838,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $14 - local.get $7 + local.get $16 i32.store offset=12 local.get $14 local.get $14 @@ -22047,25 +20852,25 @@ global.get $~lib/memory/__stack_pointer local.get $14 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store local.get $14 local.get $14 i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $0 i32.const 24 i32.mul - local.get $0 + local.get $1 i32.add - local.tee $0 - local.get $3 + local.tee $1 + local.get $13 f64.store - local.get $0 - local.get $3 + local.get $1 + local.get $13 f64.store offset=8 local.get $14 local.get $14 @@ -22073,38 +20878,38 @@ i32.const 1 i32.add i32.store offset=20 - local.get $0 + local.get $1 local.get $14 i32.load local.get $14 i32.load offset=4 - local.get $6 + local.get $7 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $0 i32.load i32.store offset=16 - local.get $1 local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 + local.get $9 + local.get $8 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 br $for-loop|2 end end @@ -22120,7 +20925,7 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -22133,14 +20938,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $6 loop $for-loop|3 - local.get $3 + local.get $6 f64.const 50 f64.lt if - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -22151,11 +20956,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#get - local.get $3 - i32.trunc_f64_s + local.get $6 + i32.trunc_sat_f64_s i32.const 20 i32.add i32.ne @@ -22167,11 +20972,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#delete - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -22181,14 +20986,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 f64.const 1 f64.add - local.set $3 + local.set $6 br $for-loop|3 end end - local.get $11 + local.get $18 i32.load offset=20 i32.const 50 i32.ne @@ -22201,14 +21006,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $6 loop $for-loop|4 - local.get $3 + local.get $6 f64.const 50 f64.lt if - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -22218,15 +21023,15 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 - local.get $3 - i32.trunc_f64_s + local.get $18 + local.get $6 + local.get $6 + i32.trunc_sat_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -22237,11 +21042,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#delete - local.get $11 - local.get $3 + local.get $18 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -22251,14 +21056,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 f64.const 1 f64.add - local.set $3 + local.set $6 br $for-loop|4 end end - local.get $11 + local.get $18 i32.load offset=20 i32.const 50 i32.ne @@ -22270,9 +21075,9 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $18 call $~lib/map/Map#clear - local.get $11 + local.get $18 i32.load offset=20 if i32.const 0 @@ -22492,7 +21297,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -22502,22 +21306,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -22529,12 +21333,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -22542,9 +21346,9 @@ if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq @@ -22553,16 +21357,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -22598,7 +21402,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -22608,14 +21412,14 @@ i32.add i32.store offset=16 local.get $5 - i32.const 12 - i32.mul - local.get $1 - i32.add - local.tee $1 + i32.const 12 + i32.mul local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -22624,7 +21428,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -22638,7 +21442,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -22673,18 +21477,18 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 local.get $0 @@ -22707,34 +21511,34 @@ select i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store local.get $3 if - local.get $1 + local.get $2 local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $2 local.get $3 i32.store offset=4 - local.get $1 local.get $2 - i32.store offset=8 local.get $1 + i32.store offset=8 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/map/Map#values (param $0 i32) (result i32) (local $1 i32) @@ -22913,7 +21717,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -22922,22 +21725,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -22949,12 +21752,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -22962,8 +21765,8 @@ if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end @@ -22971,16 +21774,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23016,7 +21819,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -23028,12 +21831,12 @@ local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23042,7 +21845,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -23056,7 +21859,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23089,7 +21892,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -23100,22 +21902,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -23127,12 +21929,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -23140,9 +21942,9 @@ if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq @@ -23151,16 +21953,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23196,7 +21998,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -23208,12 +22010,12 @@ local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23222,7 +22024,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -23236,7 +22038,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23269,7 +22071,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -23279,22 +22080,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -23306,12 +22107,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -23319,9 +22120,9 @@ if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq @@ -23330,16 +22131,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23375,7 +22176,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -23387,12 +22188,12 @@ local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23401,7 +22202,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -23415,7 +22216,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23448,7 +22249,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -23459,22 +22259,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -23486,12 +22286,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -23499,9 +22299,9 @@ if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq @@ -23510,16 +22310,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23555,7 +22355,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -23567,12 +22367,12 @@ local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23581,7 +22381,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -23595,7 +22395,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23628,7 +22428,6 @@ local.get $0 i32.load local.get $1 - local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -23637,22 +22436,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -23664,12 +22463,12 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=8 local.tee $5 i32.const 1 @@ -23677,8 +22476,8 @@ if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end @@ -23686,16 +22485,16 @@ local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23731,7 +22530,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 @@ -23743,12 +22542,12 @@ local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23757,7 +22556,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 @@ -23771,7 +22570,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.debug.wat similarity index 99% rename from tests/compiler/std/math.untouched.wat rename to tests/compiler/std/math.debug.wat index 176beb6f5c..af18fb79b3 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.debug.wat @@ -28,46 +28,46 @@ (type $i64_i64_i64_i64_i64_i32_=>_i32 (func (param i64 i64 i64 i64 i64 i32) (result i32))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "Math" "E" (global $~lib/bindings/Math/E f64)) - (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) - (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) - (import "Math" "LOG2E" (global $~lib/bindings/Math/LOG2E f64)) - (import "Math" "PI" (global $~lib/bindings/Math/PI f64)) - (import "Math" "SQRT1_2" (global $~lib/bindings/Math/SQRT1_2 f64)) - (import "Math" "SQRT2" (global $~lib/bindings/Math/SQRT2 f64)) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) + (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) + (import "env" "Math.LOG2E" (global $~lib/bindings/dom/Math.LOG2E f64)) + (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 "Math" "abs" (func $~lib/bindings/Math/abs (param f64) (result f64))) - (import "Math" "acos" (func $~lib/bindings/Math/acos (param f64) (result f64))) - (import "Math" "acosh" (func $~lib/bindings/Math/acosh (param f64) (result f64))) - (import "Math" "asin" (func $~lib/bindings/Math/asin (param f64) (result f64))) - (import "Math" "asinh" (func $~lib/bindings/Math/asinh (param f64) (result f64))) - (import "Math" "atan" (func $~lib/bindings/Math/atan (param f64) (result f64))) - (import "Math" "atanh" (func $~lib/bindings/Math/atanh (param f64) (result f64))) - (import "Math" "atan2" (func $~lib/bindings/Math/atan2 (param f64 f64) (result f64))) - (import "Math" "cbrt" (func $~lib/bindings/Math/cbrt (param f64) (result f64))) - (import "Math" "ceil" (func $~lib/bindings/Math/ceil (param f64) (result f64))) - (import "Math" "cos" (func $~lib/bindings/Math/cos (param f64) (result f64))) - (import "Math" "cosh" (func $~lib/bindings/Math/cosh (param f64) (result f64))) - (import "Math" "exp" (func $~lib/bindings/Math/exp (param f64) (result f64))) - (import "Math" "expm1" (func $~lib/bindings/Math/expm1 (param f64) (result f64))) - (import "Math" "pow" (func $~lib/bindings/Math/pow (param f64 f64) (result f64))) - (import "Math" "floor" (func $~lib/bindings/Math/floor (param f64) (result f64))) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log10" (func $~lib/bindings/Math/log10 (param f64) (result f64))) - (import "Math" "log1p" (func $~lib/bindings/Math/log1p (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (import "Math" "max" (func $~lib/bindings/Math/max (param f64 f64) (result f64))) - (import "Math" "min" (func $~lib/bindings/Math/min (param f64 f64) (result f64))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "Math" "sign" (func $~lib/bindings/Math/sign (param f64) (result f64))) - (import "Math" "sin" (func $~lib/bindings/Math/sin (param f64) (result f64))) - (import "Math" "sinh" (func $~lib/bindings/Math/sinh (param f64) (result f64))) - (import "Math" "sqrt" (func $~lib/bindings/Math/sqrt (param f64) (result f64))) - (import "Math" "tan" (func $~lib/bindings/Math/tan (param f64) (result f64))) - (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) - (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.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 $std/math/js i32 (i32.const 1)) (global $std/math/INEXACT i32 (i32.const 1)) (global $std/math/INVALID i32 (i32.const 2)) @@ -90,7 +90,7 @@ (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (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)) @@ -616,7 +616,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs local.get $1 local.get $2 local.get $3 @@ -846,7 +846,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos local.get $1 local.get $2 local.get $3 @@ -1692,7 +1692,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/acosh + call $~lib/bindings/dom/Math.acosh local.get $1 local.get $2 local.get $3 @@ -2323,7 +2323,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin local.get $1 local.get $2 local.get $3 @@ -2523,7 +2523,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/asinh + call $~lib/bindings/dom/Math.asinh local.get $1 local.get $2 local.get $3 @@ -2888,7 +2888,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan local.get $1 local.get $2 local.get $3 @@ -3207,7 +3207,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/atanh + call $~lib/bindings/dom/Math.atanh local.get $1 local.get $2 local.get $3 @@ -3597,7 +3597,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/atan2 + call $~lib/bindings/dom/Math.atan2 local.get $2 local.get $3 local.get $4 @@ -4044,7 +4044,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/cbrt + call $~lib/bindings/dom/Math.cbrt local.get $1 local.get $2 local.get $3 @@ -4189,7 +4189,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil local.get $1 local.get $2 local.get $3 @@ -4563,7 +4563,7 @@ f64.convert_i64_u f64.mul f64.add - i64.trunc_f64_u + i64.trunc_sat_f64_u local.set $18 local.get $31 local.get $33 @@ -4956,7 +4956,7 @@ local.get $5 global.set $~lib/math/rempio2_y1 local.get $7 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.0 end local.get $4 @@ -5138,7 +5138,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos local.get $1 local.get $2 local.get $3 @@ -5556,7 +5556,7 @@ f64.sub global.set $~lib/math/rempio2f_y local.get $6 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.0 end local.get $10 @@ -5850,7 +5850,7 @@ local.get $0 f64.copysign f64.add - i32.trunc_f64_s + i32.trunc_sat_f64_s local.get $2 i32.const 1072734898 i32.lt_u @@ -6477,7 +6477,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/cosh + call $~lib/bindings/dom/Math.cosh local.get $1 local.get $2 local.get $3 @@ -6558,7 +6558,7 @@ local.get $0 f32.copysign f32.add - i32.trunc_f32_s + i32.trunc_sat_f32_s local.get $2 i32.const 1065686418 i32.lt_u @@ -7020,7 +7020,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp local.get $1 local.get $2 local.get $3 @@ -7046,7 +7046,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 local.get $1 local.get $2 local.get $3 @@ -7342,7 +7342,7 @@ if (result i32) f64.const 2 local.get $0 - call $~lib/bindings/Math/pow + call $~lib/bindings/dom/Math.pow local.get $1 local.get $2 local.get $3 @@ -7495,7 +7495,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor local.get $1 local.get $2 local.get $3 @@ -7872,7 +7872,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log local.get $1 local.get $2 local.get $3 @@ -8158,7 +8158,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log10 + call $~lib/bindings/dom/Math.log10 local.get $1 local.get $2 local.get $3 @@ -8384,7 +8384,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p local.get $1 local.get $2 local.get $3 @@ -8763,7 +8763,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 local.get $1 local.get $2 local.get $3 @@ -8972,7 +8972,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/max + call $~lib/bindings/dom/Math.max local.get $2 local.get $3 local.get $4 @@ -9013,7 +9013,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/min + call $~lib/bindings/dom/Math.min local.get $2 local.get $3 local.get $4 @@ -10569,7 +10569,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/pow + call $~lib/bindings/dom/Math.pow local.get $2 local.get $3 local.get $4 @@ -11477,7 +11477,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sign + call $~lib/bindings/dom/Math.sign local.get $1 local.get $2 local.get $3 @@ -12518,7 +12518,7 @@ local.get $6 global.set $~lib/math/rempio2_y1 local.get $8 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.1 end local.get $5 @@ -12698,7 +12698,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin local.get $1 local.get $2 local.get $3 @@ -13110,7 +13110,7 @@ f64.sub global.set $~lib/math/rempio2f_y local.get $7 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.1 end local.get $10 @@ -13436,7 +13436,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sinh + call $~lib/bindings/dom/Math.sinh local.get $1 local.get $2 local.get $3 @@ -13558,7 +13558,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt local.get $1 local.get $2 local.get $3 @@ -14081,7 +14081,7 @@ local.get $15 global.set $~lib/math/rempio2_y1 local.get $11 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.2 end local.get $6 @@ -14116,7 +14116,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan local.get $1 local.get $2 local.get $3 @@ -14592,7 +14592,7 @@ f64.sub global.set $~lib/math/rempio2f_y local.get $10 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.2 end local.get $12 @@ -14885,7 +14885,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/tanh + call $~lib/bindings/dom/Math.tanh local.get $1 local.get $2 local.get $3 @@ -15000,7 +15000,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc local.get $1 local.get $2 local.get $3 @@ -15457,7 +15457,7 @@ local.get $6 global.set $~lib/math/rempio2_y1 local.get $9 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.3 end local.get $5 @@ -15708,7 +15708,7 @@ i64.le_u if local.get $0 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $1 else local.get $3 @@ -16298,7 +16298,7 @@ f32.eq drop global.get $~lib/math/NativeMath.E - global.get $~lib/bindings/Math/E + global.get $~lib/bindings/dom/Math.E f64.const 0 i32.const 0 call $std/math/check @@ -16312,7 +16312,7 @@ unreachable end global.get $~lib/math/NativeMath.LN2 - global.get $~lib/bindings/Math/LN2 + global.get $~lib/bindings/dom/Math.LN2 f64.const 0 i32.const 0 call $std/math/check @@ -16326,7 +16326,7 @@ unreachable end global.get $~lib/math/NativeMath.LN10 - global.get $~lib/bindings/Math/LN10 + global.get $~lib/bindings/dom/Math.LN10 f64.const 0 i32.const 0 call $std/math/check @@ -16340,7 +16340,7 @@ unreachable end global.get $~lib/math/NativeMath.LOG2E - global.get $~lib/bindings/Math/LOG2E + global.get $~lib/bindings/dom/Math.LOG2E f64.const 0 i32.const 0 call $std/math/check @@ -16354,7 +16354,7 @@ unreachable end global.get $~lib/math/NativeMath.PI - global.get $~lib/bindings/Math/PI + global.get $~lib/bindings/dom/Math.PI f64.const 0 i32.const 0 call $std/math/check @@ -16368,7 +16368,7 @@ unreachable end global.get $~lib/math/NativeMath.SQRT1_2 - global.get $~lib/bindings/Math/SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 f64.const 0 i32.const 0 call $std/math/check @@ -16382,7 +16382,7 @@ unreachable end global.get $~lib/math/NativeMath.SQRT2 - global.get $~lib/bindings/Math/SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 f64.const 0 i32.const 0 call $std/math/check @@ -16396,7 +16396,7 @@ unreachable end global.get $~lib/math/NativeMathf.E - global.get $~lib/bindings/Math/E + global.get $~lib/bindings/dom/Math.E f32.demote_f64 f32.const 0 i32.const 0 @@ -16411,7 +16411,7 @@ unreachable end global.get $~lib/math/NativeMathf.LN2 - global.get $~lib/bindings/Math/LN2 + global.get $~lib/bindings/dom/Math.LN2 f32.demote_f64 f32.const 0 i32.const 0 @@ -16426,7 +16426,7 @@ unreachable end global.get $~lib/math/NativeMathf.LN10 - global.get $~lib/bindings/Math/LN10 + global.get $~lib/bindings/dom/Math.LN10 f32.demote_f64 f32.const 0 i32.const 0 @@ -16441,7 +16441,7 @@ unreachable end global.get $~lib/math/NativeMathf.LOG2E - global.get $~lib/bindings/Math/LOG2E + global.get $~lib/bindings/dom/Math.LOG2E f32.demote_f64 f32.const 0 i32.const 0 @@ -16456,7 +16456,7 @@ unreachable end global.get $~lib/math/NativeMathf.PI - global.get $~lib/bindings/Math/PI + global.get $~lib/bindings/dom/Math.PI f32.demote_f64 f32.const 0 i32.const 0 @@ -16471,7 +16471,7 @@ unreachable end global.get $~lib/math/NativeMathf.SQRT1_2 - global.get $~lib/bindings/Math/SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 f32.demote_f64 f32.const 0 i32.const 0 @@ -16486,7 +16486,7 @@ unreachable end global.get $~lib/math/NativeMathf.SQRT2 - global.get $~lib/bindings/Math/SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 f32.demote_f64 f32.const 0 i32.const 0 @@ -26244,7 +26244,7 @@ global.get $std/math/kPI f64.const 2 f64.div - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.eq i32.eqz if @@ -26266,7 +26266,7 @@ f64.mul f64.const 2 f64.div - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.eq i32.eqz if @@ -26284,7 +26284,7 @@ f64.const 1.e+90 global.get $std/math/kPI f64.mul - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.eq i32.eqz if @@ -47200,7 +47200,7 @@ call $~lib/builtins/abort unreachable end - call $~lib/bindings/Math/random + call $~lib/bindings/dom/Math.random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom i32.const 0 @@ -47241,7 +47241,7 @@ br $for-loop|0 end end - call $~lib/bindings/Math/random + call $~lib/bindings/dom/Math.random i64.reinterpret_f64 local.set $3 local.get $3 @@ -51688,7 +51688,7 @@ global.get $std/math/kPI f64.const 2 f64.div - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.eq i32.eqz if @@ -51710,7 +51710,7 @@ f64.mul f64.const 2 f64.div - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.eq i32.eqz if @@ -55691,7 +55691,7 @@ f64.const 2.3283064365386963e-10 call $~lib/math/NativeMath.tan f64.const 2.3283064365386963e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55705,7 +55705,7 @@ f64.const -2.3283064365386963e-10 call $~lib/math/NativeMath.tan f64.const -2.3283064365386963e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55723,7 +55723,7 @@ f64.const 11 f64.const 16 f64.div - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55741,7 +55741,7 @@ f64.const -11 f64.const 16 f64.div - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55755,7 +55755,7 @@ f64.const 0.39269908169872414 call $~lib/math/NativeMath.tan f64.const 0.39269908169872414 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55769,7 +55769,7 @@ f64.const 0.6743358 call $~lib/math/NativeMath.tan f64.const 0.6743358 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55783,7 +55783,7 @@ f64.const 3.725290298461914e-09 call $~lib/math/NativeMath.tan f64.const 3.725290298461914e-09 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55801,7 +55801,7 @@ global.get $std/math/kPI f64.const 2 f64.div - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55815,7 +55815,7 @@ f64.const 0.5 call $~lib/math/NativeMath.tan f64.const 0.5 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55829,7 +55829,7 @@ f64.const 1.107148717794091 call $~lib/math/NativeMath.tan f64.const 1.107148717794091 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55851,7 +55851,7 @@ f64.div global.get $std/math/kPI f64.mul - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55873,7 +55873,7 @@ f64.div global.get $std/math/kPI f64.mul - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55895,7 +55895,7 @@ f64.div global.get $std/math/kPI f64.mul - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55917,7 +55917,7 @@ f64.div global.get $std/math/kPI f64.mul - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55931,7 +55931,7 @@ global.get $std/math/kTwo120 call $~lib/math/NativeMath.tan global.get $std/math/kTwo120 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if @@ -55947,7 +55947,7 @@ call $~lib/math/NativeMath.tan global.get $std/math/kTwo120 f64.neg - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.eq i32.eqz if diff --git a/tests/compiler/std/math.js b/tests/compiler/std/math.js index 4a639384ce..035ce3d87a 100644 --- a/tests/compiler/std/math.js +++ b/tests/compiler/std/math.js @@ -1,6 +1,6 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.Math = Math; imports.math = { mod: function(a, b) { return a % b; } }; -}; +} diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.release.wat similarity index 96% rename from tests/compiler/std/math.optimized.wat rename to tests/compiler/std/math.release.wat index 3df3630ede..eaea0cc0f0 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.release.wat @@ -20,46 +20,46 @@ (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "Math" "E" (global $~lib/bindings/Math/E f64)) - (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) - (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) - (import "Math" "LOG2E" (global $~lib/bindings/Math/LOG2E f64)) - (import "Math" "PI" (global $~lib/bindings/Math/PI f64)) - (import "Math" "SQRT1_2" (global $~lib/bindings/Math/SQRT1_2 f64)) - (import "Math" "SQRT2" (global $~lib/bindings/Math/SQRT2 f64)) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) + (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) + (import "env" "Math.LOG2E" (global $~lib/bindings/dom/Math.LOG2E f64)) + (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 "Math" "abs" (func $~lib/bindings/Math/abs (param f64) (result f64))) - (import "Math" "acos" (func $~lib/bindings/Math/acos (param f64) (result f64))) - (import "Math" "acosh" (func $~lib/bindings/Math/acosh (param f64) (result f64))) - (import "Math" "asin" (func $~lib/bindings/Math/asin (param f64) (result f64))) - (import "Math" "asinh" (func $~lib/bindings/Math/asinh (param f64) (result f64))) - (import "Math" "atan" (func $~lib/bindings/Math/atan (param f64) (result f64))) - (import "Math" "atanh" (func $~lib/bindings/Math/atanh (param f64) (result f64))) - (import "Math" "atan2" (func $~lib/bindings/Math/atan2 (param f64 f64) (result f64))) - (import "Math" "cbrt" (func $~lib/bindings/Math/cbrt (param f64) (result f64))) - (import "Math" "ceil" (func $~lib/bindings/Math/ceil (param f64) (result f64))) - (import "Math" "cos" (func $~lib/bindings/Math/cos (param f64) (result f64))) - (import "Math" "cosh" (func $~lib/bindings/Math/cosh (param f64) (result f64))) - (import "Math" "exp" (func $~lib/bindings/Math/exp (param f64) (result f64))) - (import "Math" "expm1" (func $~lib/bindings/Math/expm1 (param f64) (result f64))) - (import "Math" "pow" (func $~lib/bindings/Math/pow (param f64 f64) (result f64))) - (import "Math" "floor" (func $~lib/bindings/Math/floor (param f64) (result f64))) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log10" (func $~lib/bindings/Math/log10 (param f64) (result f64))) - (import "Math" "log1p" (func $~lib/bindings/Math/log1p (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (import "Math" "max" (func $~lib/bindings/Math/max (param f64 f64) (result f64))) - (import "Math" "min" (func $~lib/bindings/Math/min (param f64 f64) (result f64))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "Math" "sign" (func $~lib/bindings/Math/sign (param f64) (result f64))) - (import "Math" "sin" (func $~lib/bindings/Math/sin (param f64) (result f64))) - (import "Math" "sinh" (func $~lib/bindings/Math/sinh (param f64) (result f64))) - (import "Math" "sqrt" (func $~lib/bindings/Math/sqrt (param f64) (result f64))) - (import "Math" "tan" (func $~lib/bindings/Math/tan (param f64) (result f64))) - (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) - (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.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/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)) @@ -135,85 +135,7 @@ (data (i32.const 11762) "+n\07\'\be\bf<\00\f0*,4*=\00\00\00\00\00\00\f2?") (data (i32.const 11794) "+n\07\'\be\bf<\00\f0*,4*=\00\00\00\00\00\e0\f1?") (data (i32.const 11825) "\c0[\8fT^\bc\bf\06\be_XW\0c\1d\bd\00\00\00\00\00\c0\f1?") - (data (i32.const 11857) "\e0J:m\92\ba\bf\c8\aa[\e859%=\00\00\00\00\00\c0\f1?") - (data (i32.const 11889) "\e0J:m\92\ba\bf\c8\aa[\e859%=\00\00\00\00\00\a0\f1?") - (data (i32.const 11921) "\a01\d6E\c3\b8\bfhV/M)|\13=\00\00\00\00\00\a0\f1?") - (data (i32.const 11953) "\a01\d6E\c3\b8\bfhV/M)|\13=\00\00\00\00\00\80\f1?") - (data (i32.const 11985) "`\e5\8a\d2\f0\b6\bf\das3\c97\97&\bd\00\00\00\00\00`\f1?") - (data (i32.const 12017) " \06?\07\1b\b5\bfW^\c6a[\02\1f=\00\00\00\00\00`\f1?") - (data (i32.const 12049) " \06?\07\1b\b5\bfW^\c6a[\02\1f=\00\00\00\00\00@\f1?") - (data (i32.const 12081) "\e0\1b\96\d7A\b3\bf\df\13\f9\cc\da^,=\00\00\00\00\00@\f1?") - (data (i32.const 12113) "\e0\1b\96\d7A\b3\bf\df\13\f9\cc\da^,=\00\00\00\00\00 \f1?") - (data (i32.const 12145) "\80\a3\ee6e\b1\bf\t\a3\8fv^|\14=\00\00\00\00\00\00\f1?") - (data (i32.const 12177) "\80\11\c00\n\af\bf\91\8e6\83\9eY-=\00\00\00\00\00\00\f1?") - (data (i32.const 12209) "\80\11\c00\n\af\bf\91\8e6\83\9eY-=\00\00\00\00\00\e0\f0?") - (data (i32.const 12241) "\80\19q\ddB\ab\bfLp\d6\e5z\82\1c=\00\00\00\00\00\e0\f0?") - (data (i32.const 12273) "\80\19q\ddB\ab\bfLp\d6\e5z\82\1c=\00\00\00\00\00\c0\f0?") - (data (i32.const 12305) "\c02\f6Xt\a7\bf\ee\a1\f24F\fc,\bd\00\00\00\00\00\c0\f0?") - (data (i32.const 12337) "\c02\f6Xt\a7\bf\ee\a1\f24F\fc,\bd\00\00\00\00\00\a0\f0?") - (data (i32.const 12369) "\c0\fe\b9\87\9e\a3\bf\aa\fe&\f5\b7\02\f5<\00\00\00\00\00\a0\f0?") - (data (i32.const 12401) "\c0\fe\b9\87\9e\a3\bf\aa\fe&\f5\b7\02\f5<\00\00\00\00\00\80\f0?") - (data (i32.const 12434) "x\0e\9b\82\9f\bf\e4\t~|&\80)\bd\00\00\00\00\00\80\f0?") - (data (i32.const 12466) "x\0e\9b\82\9f\bf\e4\t~|&\80)\bd\00\00\00\00\00`\f0?") - (data (i32.const 12497) "\80\d5\07\1b\b9\97\bf9\a6\fa\93T\8d(\bd\00\00\00\00\00@\f0?") - (data (i32.const 12530) "\fc\b0\a8\c0\8f\bf\9c\a6\d3\f6|\1e\df\bc\00\00\00\00\00@\f0?") - (data (i32.const 12562) "\fc\b0\a8\c0\8f\bf\9c\a6\d3\f6|\1e\df\bc\00\00\00\00\00 \f0?") - (data (i32.const 12594) "\10k*\e0\7f\bf\e4@\da\0d?\e2\19\bd\00\00\00\00\00 \f0?") - (data (i32.const 12626) "\10k*\e0\7f\bf\e4@\da\0d?\e2\19\bd\00\00\00\00\00\00\f0?") - (data (i32.const 12678) "\f0?") - (data (i32.const 12709) "\c0\ef?") - (data (i32.const 12722) "\89u\15\10\80?\e8+\9d\99k\c7\10\bd\00\00\00\00\00\80\ef?") - (data (i32.const 12753) "\80\93XV \90?\d2\f7\e2\06[\dc#\bd\00\00\00\00\00@\ef?") - (data (i32.const 12786) "\c9(%I\98?4\0cZ2\ba\a0*\bd\00\00\00\00\00\00\ef?") - (data (i32.const 12817) "@\e7\89]A\a0?S\d7\f1\\\c0\11\01=\00\00\00\00\00\c0\ee?") - (data (i32.const 12850) ".\d4\aef\a4?(\fd\bdus\16,\bd\00\00\00\00\00\80\ee?") - (data (i32.const 12881) "\c0\9f\14\aa\94\a8?}&Z\d0\95y\19\bd\00\00\00\00\00@\ee?") - (data (i32.const 12913) "\c0\dd\cds\cb\ac?\07(\d8G\f2h\1a\bd\00\00\00\00\00 \ee?") - (data (i32.const 12945) "\c0\06\c01\ea\ae?{;\c9O>\11\0e\bd\00\00\00\00\00\e0\ed?") - (data (i32.const 12977) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") - (data (i32.const 13009) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") - (data (i32.const 13041) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") - (data (i32.const 13073) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") - (data (i32.const 13105) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") - (data (i32.const 13137) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") - (data (i32.const 13169) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") - (data (i32.const 13201) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") - (data (i32.const 13233) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") - (data (i32.const 13265) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") - (data (i32.const 13297) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") - (data (i32.const 13329) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") - (data (i32.const 13361) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") - (data (i32.const 13393) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") - (data (i32.const 13425) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") - (data (i32.const 13457) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") - (data (i32.const 13489) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") - (data (i32.const 13521) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") - (data (i32.const 13554) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") - (data (i32.const 13586) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") - (data (i32.const 13617) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") - (data (i32.const 13649) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") - (data (i32.const 13681) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") - (data (i32.const 13713) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") - (data (i32.const 13745) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") - (data (i32.const 13777) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") - (data (i32.const 13810) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") - (data (i32.const 13841) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") - (data (i32.const 13873) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") - (data (i32.const 13905) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") - (data (i32.const 13937) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") - (data (i32.const 13969) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") - (data (i32.const 14001) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") - (data (i32.const 14033) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") - (data (i32.const 14065) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") - (data (i32.const 14097) "`\d3\e1\f1\14\d3?\b8\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\0dV]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 if (result i32) local.get $0 - call $~lib/bindings/Math/acosh + call $~lib/bindings/dom/Math.acosh local.get $1 local.get $2 call $std/math/check @@ -2216,7 +2138,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/asinh + call $~lib/bindings/dom/Math.asinh local.get $1 local.get $2 call $std/math/check @@ -2761,7 +2683,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/atanh + call $~lib/bindings/dom/Math.atanh local.get $1 local.get $2 call $std/math/check @@ -3025,7 +2947,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/atan2 + call $~lib/bindings/dom/Math.atan2 local.get $2 local.get $3 call $std/math/check @@ -3326,7 +3248,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/cbrt + call $~lib/bindings/dom/Math.cbrt local.get $1 local.get $2 call $std/math/check @@ -3537,7 +3459,6 @@ i64.const 32 i64.shr_u local.tee $10 - local.tee $11 i64.mul local.get $9 i64.const 4294967295 @@ -3545,7 +3466,7 @@ i64.add local.set $2 local.get $8 - local.get $11 + local.get $10 i64.mul local.get $9 i64.const 32 @@ -3606,26 +3527,26 @@ i64.const 2 i64.shl i64.xor - local.tee $2 + local.tee $9 i64.const 64 local.get $8 i64.sub i64.shr_u i64.or - local.tee $9 + local.tee $10 i64.const 4294967295 i64.and - local.set $1 - local.get $9 + local.set $2 + local.get $10 i64.const 32 i64.shr_u - local.tee $10 + local.tee $1 i64.const 560513588 i64.mul - local.get $1 + local.get $2 i64.const 3373259426 i64.mul - local.get $1 + local.get $2 i64.const 560513588 i64.mul local.tee $11 @@ -3636,15 +3557,15 @@ i64.const 4294967295 i64.and i64.add - local.set $1 - local.get $10 + local.set $2 + local.get $1 i64.const 3373259426 i64.mul local.get $12 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $2 i64.const 32 i64.shr_u i64.add @@ -3652,23 +3573,23 @@ local.get $11 i64.const 4294967295 i64.and - local.get $1 + local.get $2 i64.const 32 i64.shl i64.add local.tee $1 - local.get $9 + local.get $10 f64.convert_i64_u f64.const 3.753184150245214e-04 f64.mul - local.get $2 + local.get $9 local.get $8 i64.shl f64.convert_i64_u f64.const 3.834951969714103e-04 f64.mul f64.add - i64.trunc_f64_u + i64.trunc_sat_f64_u local.tee $2 i64.lt_u i64.extend_i32_u @@ -3721,32 +3642,32 @@ ) (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) (local $1 f64) - (local $2 i64) - (local $3 f64) + (local $2 f64) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 31 i32.shr_u local.set $6 - local.get $4 + local.get $3 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 i32.const 1072243195 i32.le_u if - local.get $4 + local.get $3 i32.const 1044816030 i32.lt_u if @@ -3759,7 +3680,7 @@ local.tee $1 local.get $1 f64.mul - local.set $3 + local.set $2 f64.const 1 local.get $1 f64.const 0.5 @@ -3784,8 +3705,8 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $3 - local.get $3 + local.get $2 + local.get $2 f64.mul local.get $1 local.get $1 @@ -3807,7 +3728,7 @@ f64.add return end - local.get $4 + local.get $3 i32.const 2146435072 i32.ge_u if @@ -3817,18 +3738,18 @@ return end block $~lib/math/rempio2|inlined.0 (result i32) - local.get $2 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $4 + local.set $3 local.get $6 if (result f64) local.get $0 @@ -3836,8 +3757,8 @@ f64.add local.set $0 i32.const -1 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -3868,7 +3789,7 @@ f64.const 1.5707963267341256 f64.sub local.set $0 - local.get $5 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -3898,17 +3819,17 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $3 br $~lib/math/rempio2|inlined.0 end - local.get $5 + local.get $4 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $4 i32.const 20 i32.shr_u - local.tee $4 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 @@ -3922,7 +3843,7 @@ local.get $7 f64.const 6.077100506506192e-11 f64.mul - local.tee $3 + local.tee $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -3952,10 +3873,10 @@ local.get $1 f64.sub f64.sub - local.set $3 - local.get $4 - local.get $0 + local.set $2 local.get $3 + local.get $0 + local.get $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -3985,9 +3906,9 @@ local.get $1 f64.sub f64.sub - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 f64.sub else local.get $1 @@ -3999,28 +3920,28 @@ local.get $0 local.get $1 f64.sub - local.get $3 + local.get $2 f64.sub global.set $~lib/math/rempio2_y1 local.get $7 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.0 end i32.const 0 - local.get $2 + local.get $5 call $~lib/math/pio2_large_quot - local.tee $4 + local.tee $3 i32.sub - local.get $4 + local.get $3 local.get $6 select end - local.set $4 + local.set $3 global.get $~lib/math/rempio2_y0 local.set $1 global.get $~lib/math/rempio2_y1 - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 1 i32.and if (result f64) @@ -4033,7 +3954,7 @@ local.set $7 local.get $1 local.get $0 - local.get $3 + local.get $2 f64.const 0.5 f64.mul local.get $7 @@ -4061,7 +3982,7 @@ f64.mul f64.sub f64.mul - local.get $3 + local.get $2 f64.sub local.get $7 f64.const -0.16666666666666632 @@ -4116,7 +4037,7 @@ f64.add f64.mul local.get $1 - local.get $3 + local.get $2 f64.mul f64.sub f64.add @@ -4125,7 +4046,7 @@ local.tee $0 f64.neg local.get $0 - local.get $4 + local.get $3 i32.const 1 i32.add i32.const 2 @@ -4133,9 +4054,9 @@ select ) (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 i32) + (local $1 f64) (local $2 f64) - (local $3 f64) + (local $3 i32) (local $4 i64) (local $5 i32) (local $6 f64) @@ -4144,19 +4065,19 @@ (local $9 i64) local.get $0 i32.reinterpret_f32 - local.tee $5 + local.tee $3 i32.const 31 i32.shr_u - local.set $1 + local.set $5 block $folding-inner0 - local.get $5 + local.get $3 i32.const 2147483647 i32.and - local.tee $5 + local.tee $3 i32.const 1061752794 i32.le_u if - local.get $5 + local.get $3 i32.const 964689920 i32.lt_u if @@ -4165,53 +4086,53 @@ end local.get $0 f64.promote_f32 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul local.set $2 br $folding-inner0 end - local.get $5 + local.get $3 i32.const 1081824209 i32.le_u if - local.get $5 + local.get $3 i32.const 1075235811 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 3.141592653589793 f64.add - local.get $2 + local.get $1 f64.const 3.141592653589793 f64.sub - local.get $1 + local.get $5 select - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4222,34 +4143,34 @@ f32.neg return else - local.get $1 + local.get $5 if (result f64) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $3 - local.get $3 - f64.mul local.tee $2 - local.get $3 + local.get $2 + f64.mul + local.tee $1 + local.get $2 f64.mul else f64.const 1.5707963267948966 local.get $0 f64.promote_f32 f64.sub - local.tee $3 - local.get $3 - f64.mul local.tee $2 - local.get $3 + local.get $2 + f64.mul + local.tee $1 + local.get $2 f64.mul end local.set $6 - local.get $3 - local.get $6 local.get $2 + local.get $6 + local.get $1 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 @@ -4257,11 +4178,11 @@ f64.mul f64.add local.get $6 - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.mul f64.mul - local.get $2 + local.get $1 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4273,62 +4194,62 @@ end unreachable end - local.get $5 + local.get $3 i32.const 1088565717 i32.le_u if - local.get $5 + local.get $3 i32.const 1085271519 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 6.283185307179586 f64.add - local.get $2 + local.get $1 f64.const 6.283185307179586 f64.sub - local.get $1 + local.get $5 select - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul local.set $2 br $folding-inner0 else - local.get $1 + local.get $5 if (result f64) local.get $0 f32.neg f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $3 - local.get $3 - f64.mul local.tee $2 - local.get $3 + local.get $2 + f64.mul + local.tee $1 + local.get $2 f64.mul else local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $3 - local.get $3 - f64.mul local.tee $2 - local.get $3 + local.get $2 + f64.mul + local.tee $1 + local.get $2 f64.mul end local.set $6 - local.get $3 - local.get $6 local.get $2 + local.get $6 + local.get $1 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 @@ -4336,11 +4257,11 @@ f64.mul f64.add local.get $6 - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.mul f64.mul - local.get $2 + local.get $1 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4352,7 +4273,7 @@ end unreachable end - local.get $5 + local.get $3 i32.const 2139095040 i32.ge_u if @@ -4362,32 +4283,32 @@ return end block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $5 + local.get $3 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $3 + local.set $2 + local.get $1 local.get $2 - local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $3 + local.get $2 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s + local.get $2 + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.0 end - local.get $5 + local.get $3 i32.const 23 i32.shr_s i32.const 152 @@ -4406,23 +4327,23 @@ i32.add local.tee $7 i64.load offset=8 - local.set $9 + local.set $4 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $5 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $4 + local.tee $9 local.get $7 i64.load local.get $8 i64.shl - local.get $9 + local.get $4 i64.const 64 local.get $8 i64.sub @@ -4433,7 +4354,7 @@ i64.const 32 i64.gt_u if (result i64) - local.get $9 + local.get $4 local.get $8 i64.const 32 i64.sub @@ -4446,13 +4367,13 @@ i64.shr_u i64.or else - local.get $9 + local.get $4 i64.const 32 local.get $8 i64.sub i64.shr_u end - local.get $4 + local.get $9 i64.mul i64.const 32 i64.shr_u @@ -4473,40 +4394,40 @@ i64.shr_u i64.add i32.wrap_i64 - local.tee $5 + local.tee $3 i32.sub + local.get $3 local.get $5 - local.get $1 select end - local.set $1 + local.set $3 global.get $~lib/math/rempio2f_y - local.set $2 - local.get $1 + local.set $1 + local.get $3 i32.const 1 i32.and if (result f32) - local.get $2 - local.get $2 - local.get $2 - f64.mul - local.tee $3 - local.get $2 + local.get $1 + local.get $1 + local.get $1 f64.mul local.tee $2 - local.get $3 + local.get $1 + f64.mul + local.tee $1 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add + local.get $1 + local.get $2 local.get $2 - local.get $3 - local.get $3 f64.mul f64.mul - local.get $3 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4515,26 +4436,26 @@ f64.add f32.demote_f64 else - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4546,7 +4467,7 @@ local.tee $0 f32.neg local.get $0 - local.get $1 + local.get $3 i32.const 1 i32.add i32.const 2 @@ -4554,7 +4475,7 @@ select return end - local.get $3 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 @@ -4564,9 +4485,9 @@ f64.mul f64.add local.get $2 - local.get $3 + local.get $1 f64.mul - local.get $3 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4641,7 +4562,7 @@ local.get $0 f64.copysign f64.add - i32.trunc_f64_s + i32.trunc_sat_f64_s local.get $3 i32.const 1072734898 i32.lt_u @@ -5129,7 +5050,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/cosh + call $~lib/bindings/dom/Math.cosh local.get $1 local.get $2 call $std/math/check @@ -5198,7 +5119,7 @@ local.get $0 f32.copysign f32.add - i32.trunc_f32_s + i32.trunc_sat_f32_s local.get $3 i32.const 1065686418 i32.lt_u @@ -5750,7 +5671,7 @@ if (result i32) f64.const 2 local.get $0 - call $~lib/bindings/Math/pow + call $~lib/bindings/dom/Math.pow local.get $1 local.get $2 call $std/math/check @@ -6330,7 +6251,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log10 + call $~lib/bindings/dom/Math.log10 local.get $1 local.get $2 call $std/math/check @@ -6871,7 +6792,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/max + call $~lib/bindings/dom/Math.max local.get $2 f64.const 0 call $std/math/check @@ -6889,7 +6810,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/min + call $~lib/bindings/dom/Math.min local.get $2 f64.const 0 call $std/math/check @@ -6902,10 +6823,9 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i64) - (local $8 f64) + (local $7 f64) + (local $8 i64) (local $9 i64) - (local $10 i64) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 local.get $0 @@ -6921,25 +6841,25 @@ drop local.get $1 i64.reinterpret_f64 - local.tee $7 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $9 - local.get $7 + local.set $8 + local.get $5 i64.const 1 i64.shl - local.tee $5 + local.tee $4 i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $4 + local.tee $6 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $10 + local.tee $9 i64.const 2047 i64.eq i32.or @@ -6951,13 +6871,13 @@ local.get $0 local.get $1 f64.mul - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $5 local.get $4 + local.get $6 i64.const 1 i64.shl local.tee $3 @@ -6965,53 +6885,50 @@ if local.get $0 local.get $3 - local.get $5 + local.get $4 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $4 - i64.const 63 - i64.shr_u - local.get $10 + local.get $9 i64.eqz if (result i64) - local.get $4 + local.get $6 i64.const 1 - local.get $10 - local.get $4 + local.get $9 + local.get $6 i64.const 12 i64.shl i64.clz i64.sub - local.tee $10 + local.tee $9 i64.sub i64.shl else - local.get $4 + local.get $6 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $9 + local.get $8 i64.eqz if (result i64) - local.get $7 + local.get $5 i64.const 1 - local.get $9 - local.get $7 + local.get $8 + local.get $5 i64.const 12 i64.shl i64.clz i64.sub - local.tee $9 + local.tee $8 i64.sub i64.shl else - local.get $7 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 @@ -7019,8 +6936,8 @@ end local.set $4 loop $while-continue|0 + local.get $8 local.get $9 - local.get $10 i64.lt_s if local.get $3 @@ -7044,10 +6961,10 @@ i64.const 1 i64.shl local.set $3 - local.get $10 + local.get $9 i64.const 1 i64.sub - local.set $10 + local.set $9 br $while-continue|0 end end @@ -7068,7 +6985,7 @@ i64.sub local.set $3 end - local.get $10 + local.get $9 local.get $3 i64.const 11 i64.shl @@ -7076,6 +6993,9 @@ local.tee $5 i64.sub local.set $4 + local.get $6 + i64.const 63 + i64.shr_u i64.const 63 i64.shl local.get $3 @@ -8051,7 +7971,7 @@ if (result i32) local.get $0 local.get $1 - call $~lib/bindings/Math/pow + call $~lib/bindings/dom/Math.pow local.get $2 local.get $3 call $std/math/check @@ -8662,7 +8582,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sign + call $~lib/bindings/dom/Math.sign local.get $1 f64.const 0 call $std/math/check @@ -9163,32 +9083,32 @@ ) (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) (local $1 f64) - (local $2 i64) - (local $3 f64) + (local $2 f64) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 31 i32.shr_u local.set $6 - local.get $4 + local.get $3 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 i32.const 1072243195 i32.le_u if - local.get $4 + local.get $3 i32.const 1045430272 i32.lt_u if @@ -9231,7 +9151,7 @@ f64.add return end - local.get $4 + local.get $3 i32.const 2146435072 i32.ge_u if @@ -9241,18 +9161,18 @@ return end block $~lib/math/rempio2|inlined.1 (result i32) - local.get $2 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $4 + local.set $3 local.get $6 if (result f64) local.get $0 @@ -9260,8 +9180,8 @@ f64.add local.set $0 i32.const -1 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -9292,7 +9212,7 @@ f64.const 1.5707963267341256 f64.sub local.set $0 - local.get $5 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -9322,17 +9242,17 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $3 br $~lib/math/rempio2|inlined.1 end - local.get $5 + local.get $4 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $4 i32.const 20 i32.shr_u - local.tee $4 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 @@ -9346,7 +9266,7 @@ local.get $7 f64.const 6.077100506506192e-11 f64.mul - local.tee $3 + local.tee $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9376,10 +9296,10 @@ local.get $1 f64.sub f64.sub - local.set $3 - local.get $4 - local.get $0 + local.set $2 local.get $3 + local.get $0 + local.get $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9409,9 +9329,9 @@ local.get $1 f64.sub f64.sub - local.set $3 + local.set $2 local.get $0 - local.get $3 + local.get $2 f64.sub else local.get $1 @@ -9423,33 +9343,33 @@ local.get $0 local.get $1 f64.sub - local.get $3 + local.get $2 f64.sub global.set $~lib/math/rempio2_y1 local.get $7 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.1 end i32.const 0 - local.get $2 + local.get $5 call $~lib/math/pio2_large_quot - local.tee $4 + local.tee $3 i32.sub - local.get $4 + local.get $3 local.get $6 select end - local.set $4 - global.get $~lib/math/rempio2_y0 local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $2 global.get $~lib/math/rempio2_y1 local.set $7 - local.get $4 + local.get $3 i32.const 1 i32.and if (result f64) - local.get $3 - local.get $3 + local.get $2 + local.get $2 f64.mul local.tee $0 local.get $0 @@ -9494,21 +9414,21 @@ f64.mul f64.add f64.mul - local.get $3 + local.get $2 local.get $7 f64.mul f64.sub f64.add f64.add else - local.get $3 - local.get $3 + local.get $2 + local.get $2 f64.mul local.tee $0 - local.get $3 + local.get $2 f64.mul local.set $1 - local.get $3 + local.get $2 local.get $0 local.get $7 f64.const 0.5 @@ -9549,15 +9469,15 @@ local.tee $0 f64.neg local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.and select ) (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 i32) + (local $1 f64) (local $2 f64) - (local $3 f64) + (local $3 i32) (local $4 f64) (local $5 i64) (local $6 i32) @@ -9566,19 +9486,19 @@ (local $9 i64) local.get $0 i32.reinterpret_f32 - local.tee $6 + local.tee $3 i32.const 31 i32.shr_u - local.set $1 + local.set $6 block $folding-inner0 - local.get $6 + local.get $3 i32.const 2147483647 i32.and - local.tee $6 + local.tee $3 i32.const 1061752794 i32.le_u if - local.get $6 + local.get $3 i32.const 964689920 i32.lt_u if @@ -9590,46 +9510,46 @@ local.tee $2 local.get $2 f64.mul - local.tee $4 + local.tee $1 local.get $2 f64.mul - local.set $3 + local.set $4 br $folding-inner0 end - local.get $6 + local.get $3 i32.const 1081824209 i32.le_u if - local.get $6 + local.get $3 i32.const 1075235811 i32.le_u if - local.get $1 + local.get $6 if (result f32) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9643,26 +9563,26 @@ f64.promote_f32 f64.const 1.5707963267948966 f64.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9675,58 +9595,58 @@ end local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 3.141592653589793 f64.add - local.get $2 + local.get $1 f64.const 3.141592653589793 f64.sub - local.get $1 + local.get $6 select f64.neg local.tee $2 local.get $2 f64.mul - local.tee $4 + local.tee $1 local.get $2 f64.mul - local.set $3 + local.set $4 br $folding-inner0 end - local.get $6 + local.get $3 i32.const 1088565717 i32.le_u if - local.get $6 + local.get $3 i32.const 1085271519 i32.le_u if - local.get $1 + local.get $6 if (result f32) local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9739,26 +9659,26 @@ f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9772,24 +9692,24 @@ end local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 6.283185307179586 f64.add - local.get $2 + local.get $1 f64.const 6.283185307179586 f64.sub - local.get $1 + local.get $6 select local.tee $2 local.get $2 f64.mul - local.tee $4 + local.tee $1 local.get $2 f64.mul - local.set $3 + local.set $4 br $folding-inner0 end - local.get $6 + local.get $3 i32.const 2139095040 i32.ge_u if @@ -9799,32 +9719,32 @@ return end block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $6 + local.get $3 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $3 + local.set $2 + local.get $1 local.get $2 - local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $3 + local.get $2 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s + local.get $2 + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.1 end - local.get $6 + local.get $3 i32.const 23 i32.shr_s i32.const 152 @@ -9843,23 +9763,23 @@ i32.add local.tee $7 i64.load offset=8 - local.set $9 + local.set $5 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $6 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $5 + local.tee $9 local.get $7 i64.load local.get $8 i64.shl - local.get $9 + local.get $5 i64.const 64 local.get $8 i64.sub @@ -9870,7 +9790,7 @@ i64.const 32 i64.gt_u if (result i64) - local.get $9 + local.get $5 local.get $8 i64.const 32 i64.sub @@ -9883,13 +9803,13 @@ i64.shr_u i64.or else - local.get $9 + local.get $5 i64.const 32 local.get $8 i64.sub i64.shr_u end - local.get $5 + local.get $9 i64.mul i64.const 32 i64.shr_u @@ -9910,39 +9830,39 @@ i64.shr_u i64.add i32.wrap_i64 - local.tee $6 + local.tee $3 i32.sub + local.get $3 local.get $6 - local.get $1 select end - local.set $1 + local.set $3 global.get $~lib/math/rempio2f_y - local.set $2 - local.get $1 + local.set $1 + local.get $3 i32.const 1 i32.and if (result f32) - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.mul - local.set $3 - local.get $2 + local.set $2 + local.get $1 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $3 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $3 local.get $2 + local.get $1 f64.mul - local.get $2 + local.get $1 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9951,27 +9871,27 @@ f64.add f32.demote_f64 else - local.get $2 - local.get $2 - local.get $2 - f64.mul - local.tee $3 - local.get $2 + local.get $1 + local.get $1 + local.get $1 f64.mul local.tee $2 - local.get $3 + local.get $1 + f64.mul + local.tee $1 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add + local.get $1 + local.get $2 local.get $2 - local.get $3 - local.get $3 f64.mul f64.mul - local.get $3 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -9983,27 +9903,27 @@ local.tee $0 f32.neg local.get $0 - local.get $1 + local.get $3 i32.const 2 i32.and select return end local.get $2 - local.get $3 local.get $4 + local.get $1 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $3 - local.get $4 local.get $4 + local.get $1 + local.get $1 f64.mul f64.mul - local.get $4 + local.get $1 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10014,92 +9934,87 @@ ) (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - local.get $0 - local.set $3 - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $6 - f64.reinterpret_i64 - local.set $7 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $4 - block $__inlined_func$~lib/math/NativeMath.sinh - local.get $6 + (local $4 i32) + (local $5 i64) + (local $6 f64) + block $__inlined_func$~lib/math/NativeMath.sinh (result f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + f64.reinterpret_i64 + local.set $6 + f64.const 0.5 + local.get $0 + f64.copysign + local.set $3 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 1082535490 i32.lt_u if - local.get $7 + local.get $6 call $~lib/math/NativeMath.expm1 - local.set $7 - local.get $5 + local.set $6 + local.get $4 i32.const 1072693248 i32.lt_u if - local.get $5 + local.get $0 + local.get $4 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh - local.get $4 - local.get $7 - local.get $7 + drop + local.get $3 + local.get $6 + local.get $6 f64.add - local.get $7 - local.get $7 + local.get $6 + local.get $6 f64.mul - local.get $7 + local.get $6 f64.const 1 f64.add f64.div f64.sub f64.mul - local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $4 - local.get $7 - local.get $7 - local.get $7 + local.get $3 + local.get $6 + local.get $6 + local.get $6 f64.const 1 f64.add f64.div f64.add f64.mul - local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $7 + local.get $6 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.add f64.const 2247116418577894884661631e283 f64.mul f64.mul f64.const 2247116418577894884661631e283 f64.mul - local.set $3 end - local.get $3 local.get $1 local.get $2 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/sinh + call $~lib/bindings/dom/Math.sinh local.get $1 local.get $2 call $std/math/check @@ -10597,7 +10512,7 @@ f64.sub global.set $~lib/math/rempio2_y1 local.get $4 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $2 br $~lib/math/rempio2|inlined.2 end @@ -10623,10 +10538,10 @@ call $~lib/math/tan_kern ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) + (local $1 f64) (local $2 f64) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) @@ -10634,20 +10549,20 @@ (local $9 i64) local.get $0 i32.reinterpret_f32 - local.tee $6 + local.tee $4 i32.const 31 i32.shr_u - local.set $1 + local.set $6 block $folding-inner1 block $folding-inner0 - local.get $6 + local.get $4 i32.const 2147483647 i32.and - local.tee $6 + local.tee $4 i32.const 1061752794 i32.le_u if - local.get $6 + local.get $4 i32.const 964689920 i32.lt_u if @@ -10659,109 +10574,109 @@ local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 br $folding-inner0 end - local.get $6 + local.get $4 i32.const 1081824209 i32.le_u if - local.get $6 + local.get $4 i32.const 1075235811 i32.le_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 1.5707963267948966 f64.add - local.get $2 + local.get $1 f64.const 1.5707963267948966 f64.sub - local.get $1 + local.get $6 select local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 3.141592653589793 f64.add - local.get $2 + local.get $1 f64.const 3.141592653589793 f64.sub - local.get $1 + local.get $6 select local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 br $folding-inner0 end unreachable end - local.get $6 + local.get $4 i32.const 1088565717 i32.le_u if - local.get $6 + local.get $4 i32.const 1085271519 i32.le_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 4.71238898038469 f64.add - local.get $2 + local.get $1 f64.const 4.71238898038469 f64.sub - local.get $1 + local.get $6 select local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 6.283185307179586 f64.add - local.get $2 + local.get $1 f64.const 6.283185307179586 f64.sub - local.get $1 + local.get $6 select local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 br $folding-inner0 end unreachable end - local.get $6 + local.get $4 i32.const 2139095040 i32.ge_u if @@ -10771,32 +10686,32 @@ return end block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $6 + local.get $4 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $2 + local.tee $1 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $3 + local.set $2 + local.get $1 local.get $2 - local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $3 + local.get $2 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s + local.get $2 + i32.trunc_sat_f64_s br $~lib/math/rempio2f|inlined.2 end - local.get $6 + local.get $4 i32.const 23 i32.shr_s i32.const 152 @@ -10815,23 +10730,23 @@ i32.add local.tee $7 i64.load offset=8 - local.set $9 + local.set $5 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $6 + local.get $4 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $5 + local.tee $9 local.get $7 i64.load local.get $8 i64.shl - local.get $9 + local.get $5 i64.const 64 local.get $8 i64.sub @@ -10842,7 +10757,7 @@ i64.const 32 i64.gt_u if (result i64) - local.get $9 + local.get $5 local.get $8 i64.const 32 i64.sub @@ -10855,13 +10770,13 @@ i64.shr_u i64.or else - local.get $9 + local.get $5 i64.const 32 local.get $8 i64.sub i64.shr_u end - local.get $5 + local.get $9 i64.mul i64.const 32 i64.shr_u @@ -10882,44 +10797,44 @@ i64.shr_u i64.add i32.wrap_i64 - local.tee $6 + local.tee $4 i32.sub + local.get $4 local.get $6 - local.get $1 select end - local.set $1 + local.set $4 global.get $~lib/math/rempio2f_y + local.tee $1 + local.get $1 + f64.mul local.tee $2 local.get $2 f64.mul - local.tee $3 - local.get $3 - f64.mul - local.set $4 + local.set $3 f64.const -1 + local.get $1 local.get $2 - local.get $3 - local.get $2 + local.get $1 f64.mul - local.tee $2 - local.get $3 + local.tee $1 + local.get $2 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $2 - local.get $4 - f64.mul + local.get $1 local.get $3 + f64.mul + local.get $2 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $4 local.get $3 + local.get $2 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -10928,10 +10843,10 @@ f64.add f64.mul f64.add - local.tee $2 + local.tee $1 f64.div - local.get $2 local.get $1 + local.get $4 i32.const 1 i32.and select @@ -10939,11 +10854,11 @@ return end local.get $2 - local.get $3 + local.get $1 local.get $2 f64.mul local.tee $2 - local.get $3 + local.get $1 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 @@ -10951,15 +10866,15 @@ f64.mul f64.add local.get $2 - local.get $4 - f64.mul local.get $3 + f64.mul + local.get $1 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $4 local.get $3 + local.get $1 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -10973,11 +10888,11 @@ end f64.const -1 local.get $2 - local.get $3 + local.get $1 local.get $2 f64.mul local.tee $2 - local.get $3 + local.get $1 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 @@ -10985,15 +10900,15 @@ f64.mul f64.add local.get $2 - local.get $4 - f64.mul local.get $3 + f64.mul + local.get $1 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $4 local.get $3 + local.get $1 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11086,7 +11001,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/tanh + call $~lib/bindings/dom/Math.tanh local.get $1 local.get $2 call $std/math/check @@ -11172,9 +11087,9 @@ (func $~lib/math/NativeMath.sincos (param $0 f64) (local $1 f64) (local $2 f64) - (local $3 i64) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 f64) (local $8 f64) @@ -11182,22 +11097,22 @@ (local $10 f64) local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 31 i32.shr_u local.set $6 - local.get $4 + local.get $3 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 i32.const 1072243195 i32.le_u if - local.get $4 + local.get $3 i32.const 1044816030 i32.lt_u if @@ -11212,12 +11127,11 @@ local.get $0 f64.mul local.tee $1 - local.tee $2 local.get $0 f64.mul - local.get $2 - local.get $2 - local.get $2 + local.get $1 + local.get $1 + local.get $1 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -11225,12 +11139,13 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $2 - local.get $2 - local.get $2 + local.get $1 + local.get $1 + local.get $1 f64.mul + local.tee $2 f64.mul - local.get $2 + local.get $1 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -11247,13 +11162,13 @@ local.get $1 f64.const 0.5 f64.mul - local.tee $2 - f64.sub local.tee $7 + f64.sub + local.tee $8 f64.const 1 - local.get $7 + local.get $8 f64.sub - local.get $2 + local.get $7 f64.sub local.get $1 local.get $1 @@ -11267,10 +11182,7 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $2 + local.get $2 local.get $2 f64.mul local.get $1 @@ -11294,7 +11206,7 @@ global.set $~lib/math/NativeMath.sincos_cos return end - local.get $4 + local.get $3 i32.const 2139095040 i32.ge_u if @@ -11308,18 +11220,18 @@ return end block $~lib/math/rempio2|inlined.3 (result i32) - local.get $3 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $4 + local.set $3 local.get $6 if (result f64) local.get $0 @@ -11327,8 +11239,8 @@ f64.add local.set $0 i32.const -1 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -11359,7 +11271,7 @@ f64.const 1.5707963267341256 f64.sub local.set $0 - local.get $5 + local.get $4 i32.const 1073291771 i32.ne if (result f64) @@ -11389,17 +11301,17 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $3 br $~lib/math/rempio2|inlined.3 end - local.get $5 + local.get $4 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $4 i32.const 20 i32.shr_u - local.tee $4 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 @@ -11444,7 +11356,7 @@ f64.sub f64.sub local.set $1 - local.get $4 + local.get $3 local.get $0 local.get $1 f64.sub @@ -11494,35 +11406,35 @@ f64.sub global.set $~lib/math/rempio2_y1 local.get $7 - i32.trunc_f64_s + i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.3 end i32.const 0 - local.get $3 + local.get $5 call $~lib/math/pio2_large_quot - local.tee $4 + local.tee $3 i32.sub - local.get $4 + local.get $3 local.get $6 select end - local.set $4 + local.set $3 global.get $~lib/math/rempio2_y0 - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f64.mul - local.tee $9 + local.tee $8 local.tee $0 - local.get $8 + local.get $7 f64.mul - local.set $2 - local.get $8 + local.set $1 + local.get $7 local.get $0 global.get $~lib/math/rempio2_y1 - local.tee $1 + local.tee $9 f64.const 0.5 f64.mul - local.get $2 + local.get $1 local.get $0 local.get $0 f64.const 2.7557313707070068e-06 @@ -11547,9 +11459,9 @@ f64.mul f64.sub f64.mul - local.get $1 + local.get $9 f64.sub - local.get $2 + local.get $1 f64.const -0.16666666666666632 f64.mul f64.sub @@ -11557,21 +11469,21 @@ local.tee $2 local.set $0 f64.const 1 - local.get $9 + local.get $8 f64.const 0.5 f64.mul - local.tee $10 + local.tee $1 f64.sub - local.tee $7 + local.tee $10 f64.const 1 - local.get $7 - f64.sub local.get $10 f64.sub - local.get $9 - local.get $9 - local.get $9 - local.get $9 + local.get $1 + f64.sub + local.get $8 + local.get $8 + local.get $8 + local.get $8 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11580,14 +11492,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $9 - local.get $9 + local.get $8 + local.get $8 f64.mul - local.tee $7 - local.get $7 + local.tee $1 + local.get $1 f64.mul - local.get $9 - local.get $9 + local.get $8 + local.get $8 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11598,14 +11510,14 @@ f64.mul f64.add f64.mul - local.get $8 - local.get $1 + local.get $7 + local.get $9 f64.mul f64.sub f64.add f64.add local.set $1 - local.get $4 + local.get $3 i32.const 1 i32.and if @@ -11615,7 +11527,7 @@ f64.neg local.set $1 end - local.get $4 + local.get $3 i32.const 2 i32.and if (result f64) @@ -11686,7 +11598,7 @@ i64.le_u if (result i32) local.get $0 - i32.trunc_f64_s + i32.trunc_sat_f64_s else local.get $5 i64.const 1106 @@ -11729,7 +11641,7 @@ i64.le_u if (result i32) local.get $1 - i32.trunc_f64_s + i32.trunc_sat_f64_s else local.get $5 i64.const 1106 @@ -12174,7 +12086,7 @@ (local $5 f32) (local $6 i64) f64.const 2.718281828459045 - global.get $~lib/bindings/Math/E + global.get $~lib/bindings/dom/Math.E f64.const 0 call $std/math/check i32.eqz @@ -12187,7 +12099,7 @@ unreachable end f64.const 0.6931471805599453 - global.get $~lib/bindings/Math/LN2 + global.get $~lib/bindings/dom/Math.LN2 f64.const 0 call $std/math/check i32.eqz @@ -12200,7 +12112,7 @@ unreachable end f64.const 2.302585092994046 - global.get $~lib/bindings/Math/LN10 + global.get $~lib/bindings/dom/Math.LN10 f64.const 0 call $std/math/check i32.eqz @@ -12213,7 +12125,7 @@ unreachable end f64.const 1.4426950408889634 - global.get $~lib/bindings/Math/LOG2E + global.get $~lib/bindings/dom/Math.LOG2E f64.const 0 call $std/math/check i32.eqz @@ -12226,7 +12138,7 @@ unreachable end f64.const 3.141592653589793 - global.get $~lib/bindings/Math/PI + global.get $~lib/bindings/dom/Math.PI f64.const 0 call $std/math/check i32.eqz @@ -12239,7 +12151,7 @@ unreachable end f64.const 0.7071067811865476 - global.get $~lib/bindings/Math/SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 f64.const 0 call $std/math/check i32.eqz @@ -12252,7 +12164,7 @@ unreachable end f64.const 1.4142135623730951 - global.get $~lib/bindings/Math/SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 f64.const 0 call $std/math/check i32.eqz @@ -12265,7 +12177,7 @@ unreachable end f32.const 2.7182817459106445 - global.get $~lib/bindings/Math/E + global.get $~lib/bindings/dom/Math.E f32.demote_f64 f32.const 0 call $std/math/check @@ -12279,7 +12191,7 @@ unreachable end f32.const 0.6931471824645996 - global.get $~lib/bindings/Math/LN2 + global.get $~lib/bindings/dom/Math.LN2 f32.demote_f64 f32.const 0 call $std/math/check @@ -12293,7 +12205,7 @@ unreachable end f32.const 2.3025851249694824 - global.get $~lib/bindings/Math/LN10 + global.get $~lib/bindings/dom/Math.LN10 f32.demote_f64 f32.const 0 call $std/math/check @@ -12307,7 +12219,7 @@ unreachable end f32.const 1.4426950216293335 - global.get $~lib/bindings/Math/LOG2E + global.get $~lib/bindings/dom/Math.LOG2E f32.demote_f64 f32.const 0 call $std/math/check @@ -12321,7 +12233,7 @@ unreachable end f32.const 3.1415927410125732 - global.get $~lib/bindings/Math/PI + global.get $~lib/bindings/dom/Math.PI f32.demote_f64 f32.const 0 call $std/math/check @@ -12335,7 +12247,7 @@ unreachable end f32.const 0.7071067690849304 - global.get $~lib/bindings/Math/SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 f32.demote_f64 f32.const 0 call $std/math/check @@ -12349,7 +12261,7 @@ unreachable end f32.const 1.4142135381698608 - global.get $~lib/bindings/Math/SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 f32.demote_f64 f32.const 0 call $std/math/check @@ -13180,7 +13092,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 8.06684839057968 f64.const 0 call $std/math/check @@ -13202,7 +13114,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 4.345239849338305 f64.const 0 call $std/math/check @@ -13224,7 +13136,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 8.38143342755525 f64.const 0 call $std/math/check @@ -13246,7 +13158,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 6.531673581913484 f64.const 0 call $std/math/check @@ -13268,7 +13180,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 9.267056966972586 f64.const 0 call $std/math/check @@ -13290,7 +13202,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0.6619858980995045 f64.const 0 call $std/math/check @@ -13312,7 +13224,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0.4066039223853553 f64.const 0 call $std/math/check @@ -13334,7 +13246,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0.5617597462207241 f64.const 0 call $std/math/check @@ -13356,7 +13268,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0.7741522965913037 f64.const 0 call $std/math/check @@ -13378,7 +13290,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0.6787637026394024 f64.const 0 call $std/math/check @@ -13400,7 +13312,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0 f64.const 0 call $std/math/check @@ -13422,7 +13334,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 0 f64.const 0 call $std/math/check @@ -13444,7 +13356,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 1 f64.const 0 call $std/math/check @@ -13466,7 +13378,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const 1 f64.const 0 call $std/math/check @@ -13488,7 +13400,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const inf f64.const 0 call $std/math/check @@ -13510,7 +13422,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const inf f64.const 0 call $std/math/check @@ -13532,7 +13444,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/abs + call $~lib/bindings/dom/Math.abs f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13776,7 +13688,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13799,7 +13711,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13822,7 +13734,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13845,7 +13757,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13868,7 +13780,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -13891,7 +13803,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 0.8473310828433507 f64.const -0.41553276777267456 call $std/math/check @@ -13914,7 +13826,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 1.989530071088669 f64.const 0.4973946213722229 call $std/math/check @@ -13937,7 +13849,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 0.9742849645674904 f64.const -0.4428897500038147 call $std/math/check @@ -13960,7 +13872,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 0.6854215158636222 f64.const -0.12589527666568756 call $std/math/check @@ -13983,7 +13895,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 2.316874138205964 f64.const -0.17284949123859406 call $std/math/check @@ -14006,7 +13918,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 1.5707963267948966 f64.const -0.27576595544815063 call $std/math/check @@ -14029,7 +13941,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 3.141592653589793 f64.const -0.27576595544815063 call $std/math/check @@ -14052,7 +13964,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 0 f64.const 0 call $std/math/check @@ -14075,7 +13987,7 @@ call $std/math/check if (result i32) f64.const 1.0000000000000002 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -14098,7 +14010,7 @@ call $std/math/check if (result i32) f64.const -1.0000000000000002 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -14121,7 +14033,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -14144,7 +14056,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -14167,7 +14079,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -14190,7 +14102,7 @@ call $std/math/check if (result i32) f64.const -0.5309227209592985 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 2.1304853799705463 f64.const 0.1391008496284485 call $std/math/check @@ -14213,7 +14125,7 @@ call $std/math/check if (result i32) f64.const 0.4939556746399746 - call $~lib/bindings/Math/acos + call $~lib/bindings/dom/Math.acos f64.const 1.0541629875851946 f64.const 0.22054767608642578 call $std/math/check @@ -15037,7 +14949,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15060,7 +14972,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15083,7 +14995,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15106,7 +15018,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15129,7 +15041,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15152,7 +15064,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 0.7234652439515459 f64.const -0.13599912822246552 call $std/math/check @@ -15175,7 +15087,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const -0.41873374429377225 f64.const -0.09264230728149414 call $std/math/check @@ -15198,7 +15110,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 0.5965113622274062 f64.const -0.10864213854074478 call $std/math/check @@ -15221,7 +15133,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 0.8853748109312743 f64.const -0.4256366193294525 call $std/math/check @@ -15244,7 +15156,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const -0.7460778114110673 f64.const 0.13986606895923615 call $std/math/check @@ -15267,7 +15179,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 1.5707963267948966 f64.const -0.27576595544815063 call $std/math/check @@ -15290,7 +15202,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const -1.5707963267948966 f64.const 0.27576595544815063 call $std/math/check @@ -15313,7 +15225,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 0 f64.const 0 call $std/math/check @@ -15336,7 +15248,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const -0 f64.const 0 call $std/math/check @@ -15359,7 +15271,7 @@ call $std/math/check if (result i32) f64.const 1.0000000000000002 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15382,7 +15294,7 @@ call $std/math/check if (result i32) f64.const -1.0000000000000002 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15405,7 +15317,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15428,7 +15340,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15451,7 +15363,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -15474,7 +15386,7 @@ call $std/math/check if (result i32) f64.const 0.5073043929119148 - call $~lib/bindings/Math/asin + call $~lib/bindings/dom/Math.asin f64.const 0.5320538997772349 f64.const -0.16157317161560059 call $std/math/check @@ -16167,7 +16079,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -1.4474613762633468 f64.const 0.14857111871242523 call $std/math/check @@ -16190,7 +16102,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 1.344597927114538 f64.const -0.08170335739850998 call $std/math/check @@ -16213,7 +16125,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -1.4520463463295539 f64.const -0.07505480200052261 call $std/math/check @@ -16236,7 +16148,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -1.4188758658752532 f64.const -0.057633496820926666 call $std/math/check @@ -16259,7 +16171,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 1.463303145448706 f64.const 0.1606956422328949 call $std/math/check @@ -16282,7 +16194,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0.5847550670238325 f64.const 0.4582556486129761 call $std/math/check @@ -16305,7 +16217,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -0.3861864177552131 f64.const -0.2574281692504883 call $std/math/check @@ -16328,7 +16240,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0.5118269531628881 f64.const -0.11444277316331863 call $std/math/check @@ -16351,7 +16263,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0.6587802431653822 f64.const -0.11286488175392151 call $std/math/check @@ -16374,7 +16286,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -0.5963307826973472 f64.const -0.2182842344045639 call $std/math/check @@ -16397,7 +16309,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0 f64.const 0 call $std/math/check @@ -16420,7 +16332,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -0 f64.const 0 call $std/math/check @@ -16443,7 +16355,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0.7853981633974483 f64.const -0.27576595544815063 call $std/math/check @@ -16466,7 +16378,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -0.7853981633974483 f64.const 0.27576595544815063 call $std/math/check @@ -16489,7 +16401,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 1.5707963267948966 f64.const -0.27576595544815063 call $std/math/check @@ -16512,7 +16424,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const -1.5707963267948966 f64.const 0.27576595544815063 call $std/math/check @@ -16535,7 +16447,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -16558,7 +16470,7 @@ call $std/math/check if (result i32) f64.const 0.6929821535674624 - call $~lib/bindings/Math/atan + call $~lib/bindings/dom/Math.atan f64.const 0.6060004555152562 f64.const -0.17075790464878082 call $std/math/check @@ -19092,7 +19004,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -8 f64.const 0 call $std/math/check @@ -19114,7 +19026,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 5 f64.const 0 call $std/math/check @@ -19136,7 +19048,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -8 f64.const 0 call $std/math/check @@ -19158,7 +19070,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -6 f64.const 0 call $std/math/check @@ -19180,7 +19092,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 10 f64.const 0 call $std/math/check @@ -19202,7 +19114,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19224,7 +19136,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19246,7 +19158,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19268,7 +19180,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19290,7 +19202,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19312,7 +19224,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -19334,7 +19246,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const inf f64.const 0 call $std/math/check @@ -19356,7 +19268,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -inf f64.const 0 call $std/math/check @@ -19378,7 +19290,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 0 f64.const 0 call $std/math/check @@ -19400,7 +19312,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19422,7 +19334,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19444,7 +19356,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -19466,7 +19378,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19488,7 +19400,7 @@ call $std/math/check if (result i32) f64.const -0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19510,7 +19422,7 @@ call $std/math/check if (result i32) f64.const 1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 2 f64.const 0 call $std/math/check @@ -19532,7 +19444,7 @@ call $std/math/check if (result i32) f64.const -1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -19554,7 +19466,7 @@ call $std/math/check if (result i32) f64.const 0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19576,7 +19488,7 @@ call $std/math/check if (result i32) f64.const -0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19598,7 +19510,7 @@ call $std/math/check if (result i32) f64.const 7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19620,7 +19532,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19642,7 +19554,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -19664,7 +19576,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const inf f64.const 0 call $std/math/check @@ -19686,7 +19598,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -inf f64.const 0 call $std/math/check @@ -19708,7 +19620,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 0 f64.const 0 call $std/math/check @@ -19730,7 +19642,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19752,7 +19664,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19774,7 +19686,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -19796,7 +19708,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19818,7 +19730,7 @@ call $std/math/check if (result i32) f64.const -0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19840,7 +19752,7 @@ call $std/math/check if (result i32) f64.const 1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 2 f64.const 0 call $std/math/check @@ -19862,7 +19774,7 @@ call $std/math/check if (result i32) f64.const -1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -19884,7 +19796,7 @@ call $std/math/check if (result i32) f64.const 0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19906,7 +19818,7 @@ call $std/math/check if (result i32) f64.const -0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19928,7 +19840,7 @@ call $std/math/check if (result i32) f64.const 7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -19950,7 +19862,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -19972,7 +19884,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -19994,7 +19906,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const inf f64.const 0 call $std/math/check @@ -20016,7 +19928,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -inf f64.const 0 call $std/math/check @@ -20038,7 +19950,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 0 f64.const 0 call $std/math/check @@ -20060,7 +19972,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -20082,7 +19994,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -20104,7 +20016,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -20126,7 +20038,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -20148,7 +20060,7 @@ call $std/math/check if (result i32) f64.const -0.5 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -20170,7 +20082,7 @@ call $std/math/check if (result i32) f64.const 1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 2 f64.const 0 call $std/math/check @@ -20192,7 +20104,7 @@ call $std/math/check if (result i32) f64.const -1.0000152587890625 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -1 f64.const 0 call $std/math/check @@ -20214,7 +20126,7 @@ call $std/math/check if (result i32) f64.const 0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -20236,7 +20148,7 @@ call $std/math/check if (result i32) f64.const -0.9999923706054688 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -20258,7 +20170,7 @@ call $std/math/check if (result i32) f64.const 7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const 1 f64.const 0 call $std/math/check @@ -20280,7 +20192,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/ceil + call $~lib/bindings/dom/Math.ceil f64.const -0 f64.const 0 call $std/math/check @@ -21018,7 +20930,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.21126281599887137 f64.const -0.10962469130754471 call $std/math/check @@ -21041,7 +20953,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.35895602297578955 f64.const -0.10759828239679337 call $std/math/check @@ -21064,7 +20976,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.503333091765516 f64.const -0.021430473774671555 call $std/math/check @@ -21087,7 +20999,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9692853212503283 f64.const -0.4787876307964325 call $std/math/check @@ -21110,7 +21022,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9875878064788627 f64.const 0.4880668818950653 call $std/math/check @@ -21133,7 +21045,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.7887730869248576 f64.const 0.12708666920661926 call $std/math/check @@ -21156,7 +21068,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9184692397007294 f64.const -0.26120713353157043 call $std/math/check @@ -21179,7 +21091,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8463190467415896 f64.const -0.302586168050766 call $std/math/check @@ -21202,7 +21114,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.7150139289952383 f64.const -0.08537746220827103 call $std/math/check @@ -21225,7 +21137,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.7783494994757447 f64.const 0.30890750885009766 call $std/math/check @@ -21248,7 +21160,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21271,7 +21183,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21294,7 +21206,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -21317,7 +21229,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -21340,7 +21252,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -21363,7 +21275,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.5403023058681398 f64.const 0.4288286566734314 call $std/math/check @@ -21386,7 +21298,7 @@ call $std/math/check if (result i32) f64.const 2 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.4161468365471424 f64.const -0.35859397053718567 call $std/math/check @@ -21409,7 +21321,7 @@ call $std/math/check if (result i32) f64.const 3 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9899924966004454 f64.const 0.3788451552391052 call $std/math/check @@ -21432,7 +21344,7 @@ call $std/math/check if (result i32) f64.const 4 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.6536436208636119 f64.const -0.23280560970306396 call $std/math/check @@ -21455,7 +21367,7 @@ call $std/math/check if (result i32) f64.const 5 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.28366218546322625 f64.const -0.3277357816696167 call $std/math/check @@ -21478,7 +21390,7 @@ call $std/math/check if (result i32) f64.const 0.1 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9950041652780258 f64.const 0.49558526277542114 call $std/math/check @@ -21501,7 +21413,7 @@ call $std/math/check if (result i32) f64.const 0.2 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9800665778412416 f64.const -0.02407640963792801 call $std/math/check @@ -21524,7 +21436,7 @@ call $std/math/check if (result i32) f64.const 0.3 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.955336489125606 f64.const -0.37772229313850403 call $std/math/check @@ -21547,7 +21459,7 @@ call $std/math/check if (result i32) f64.const 0.4 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9210609940028851 f64.const 0.25818485021591187 call $std/math/check @@ -21570,7 +21482,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8775825618903728 f64.const 0.3839152157306671 call $std/math/check @@ -21593,7 +21505,7 @@ call $std/math/check if (result i32) f64.const 2.3641409746639015e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21616,7 +21528,7 @@ call $std/math/check if (result i32) f64.const 1.1820704873319507e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21639,7 +21551,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21662,7 +21574,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -21685,7 +21597,7 @@ call $std/math/check if (result i32) f64.const -3.14 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9999987317275395 f64.const 0.3855516016483307 call $std/math/check @@ -21708,7 +21620,7 @@ call $std/math/check if (result i32) f64.const 8988465674311579538646525e283 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.826369834614148 f64.const -0.3695965111255646 call $std/math/check @@ -21731,7 +21643,7 @@ call $std/math/check if (result i32) f64.const 1797693134862315708145274e284 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9999876894265599 f64.const 0.23448343575000763 call $std/math/check @@ -21754,7 +21666,7 @@ call $std/math/check if (result i32) f64.const -8988465674311579538646525e283 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.826369834614148 f64.const -0.3695965111255646 call $std/math/check @@ -21777,7 +21689,7 @@ call $std/math/check if (result i32) f64.const 3.14 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9999987317275395 f64.const 0.3855516016483307 call $std/math/check @@ -21800,7 +21712,7 @@ call $std/math/check if (result i32) f64.const 3.1415 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9999999957076562 f64.const -0.30608975887298584 call $std/math/check @@ -21823,7 +21735,7 @@ call $std/math/check if (result i32) f64.const 3.141592 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9999999999997864 f64.const 0.15403328835964203 call $std/math/check @@ -21846,7 +21758,7 @@ call $std/math/check if (result i32) f64.const 3.14159265 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -1 f64.const -0.02901807427406311 call $std/math/check @@ -21869,7 +21781,7 @@ call $std/math/check if (result i32) f64.const 3.1415926535 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -1 f64.const -1.8155848010792397e-05 call $std/math/check @@ -21892,7 +21804,7 @@ call $std/math/check if (result i32) f64.const 3.141592653589 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -1 f64.const -1.4169914130945926e-09 call $std/math/check @@ -21915,7 +21827,7 @@ call $std/math/check if (result i32) f64.const 3.14159265358979 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -1 f64.const -2.350864897985184e-14 call $std/math/check @@ -21938,7 +21850,7 @@ call $std/math/check if (result i32) f64.const 3.141592653589793 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -1 f64.const -3.377158741883318e-17 call $std/math/check @@ -21961,7 +21873,7 @@ call $std/math/check if (result i32) f64.const 1.57 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 7.963267107332633e-04 f64.const 0.2968159317970276 call $std/math/check @@ -21984,7 +21896,7 @@ call $std/math/check if (result i32) f64.const 1.570796 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 3.2679489653813835e-07 f64.const -0.32570895552635193 call $std/math/check @@ -22007,7 +21919,7 @@ call $std/math/check if (result i32) f64.const 1.5707963267 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 9.489659630678013e-11 f64.const -0.27245646715164185 call $std/math/check @@ -22030,7 +21942,7 @@ call $std/math/check if (result i32) f64.const 1.57079632679489 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 6.722570487708307e-15 f64.const -0.10747683793306351 call $std/math/check @@ -22053,7 +21965,7 @@ call $std/math/check if (result i32) f64.const 1.5707963267948966 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 6.123233995736766e-17 f64.const 0.12148229777812958 call $std/math/check @@ -22076,7 +21988,7 @@ call $std/math/check if (result i32) f64.const 0.6700635199486106 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.7837822193016158 f64.const -0.07278502732515335 call $std/math/check @@ -22099,7 +22011,7 @@ call $std/math/check if (result i32) f64.const 0.5343890189437553 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8605799719039517 f64.const -0.48434028029441833 call $std/math/check @@ -22122,7 +22034,7 @@ call $std/math/check if (result i32) f64.const 0.43999702754890085 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9047529293001976 f64.const 0.029777472838759422 call $std/math/check @@ -22145,7 +22057,7 @@ call $std/math/check if (result i32) f64.const 0.9902840844687313 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.5484523364480768 f64.const 0.19765280187129974 call $std/math/check @@ -22168,7 +22080,7 @@ call $std/math/check if (result i32) f64.const 0.45381447534338915 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8987813902263783 f64.const -0.017724866047501564 call $std/math/check @@ -22191,7 +22103,7 @@ call $std/math/check if (result i32) f64.const 0.4609888813583589 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8956130474713057 f64.const 0.36449819803237915 call $std/math/check @@ -22214,7 +22126,7 @@ call $std/math/check if (result i32) f64.const 0.9285434097956422 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.5990009794292984 f64.const -0.2899416387081146 call $std/math/check @@ -22237,7 +22149,7 @@ call $std/math/check if (result i32) f64.const 0.9109092124488352 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.6130276692774378 f64.const -0.49353134632110596 call $std/math/check @@ -22260,7 +22172,7 @@ call $std/math/check if (result i32) f64.const 0.8328600650359556 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.6727624710046357 f64.const -0.36606088280677795 call $std/math/check @@ -22283,7 +22195,7 @@ call $std/math/check if (result i32) f64.const 0.9536201252203433 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.5787346183487084 f64.const -0.17089833319187164 call $std/math/check @@ -22306,7 +22218,7 @@ call $std/math/check if (result i32) f64.const 0.8726590065457699 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.6427919144259047 f64.const -0.2744986116886139 call $std/math/check @@ -22329,7 +22241,7 @@ call $std/math/check if (result i32) f64.const 0.18100447535968447 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9836633656884893 f64.const 3.0195272993296385e-03 call $std/math/check @@ -22352,7 +22264,7 @@ call $std/math/check if (result i32) f64.const 2.356194490349839 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067812979126 f64.const -0.48278746008872986 call $std/math/check @@ -22375,7 +22287,7 @@ call $std/math/check if (result i32) f64.const 2.356194490372272 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067813137752 f64.const -0.4866050183773041 call $std/math/check @@ -22398,7 +22310,7 @@ call $std/math/check if (result i32) f64.const 2.3561944902251115 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.707106781209717 f64.const -0.3533952236175537 call $std/math/check @@ -22421,7 +22333,7 @@ call $std/math/check if (result i32) f64.const 2.3561944903149996 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067812732775 f64.const -0.41911986470222473 call $std/math/check @@ -22444,7 +22356,7 @@ call $std/math/check if (result i32) f64.const 2.3561944903603527 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.707106781305347 f64.const -0.4706200063228607 call $std/math/check @@ -22467,7 +22379,7 @@ call $std/math/check if (result i32) f64.const 2.3561944903826197 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067813210922 f64.const -0.30618351697921753 call $std/math/check @@ -22490,7 +22402,7 @@ call $std/math/check if (result i32) f64.const 2.356194490371803 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067813134436 f64.const -0.30564820766448975 call $std/math/check @@ -22513,7 +22425,7 @@ call $std/math/check if (result i32) f64.const 2.356194490399931 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067813333329 f64.const -0.38845571875572205 call $std/math/check @@ -22536,7 +22448,7 @@ call $std/math/check if (result i32) f64.const 2.356194490260191 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.707106781234522 f64.const -0.23796851933002472 call $std/math/check @@ -22559,7 +22471,7 @@ call $std/math/check if (result i32) f64.const 2.3561944904043153 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7071067813364332 f64.const -0.3274589478969574 call $std/math/check @@ -22582,7 +22494,7 @@ call $std/math/check if (result i32) f64.const 2.0943951024759446 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000716629 f64.const -0.41711342334747314 call $std/math/check @@ -22605,7 +22517,7 @@ call $std/math/check if (result i32) f64.const 2.09439510243324 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000346797 f64.const -0.3566164970397949 call $std/math/check @@ -22628,7 +22540,7 @@ call $std/math/check if (result i32) f64.const 2.0943951025133885 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000001040902 f64.const -0.2253485918045044 call $std/math/check @@ -22651,7 +22563,7 @@ call $std/math/check if (result i32) f64.const 2.0943951025466707 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000001329135 f64.const -0.12982259690761566 call $std/math/check @@ -22674,7 +22586,7 @@ call $std/math/check if (result i32) f64.const 2.094395102413896 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000179272 f64.const -0.15886764228343964 call $std/math/check @@ -22697,7 +22609,7 @@ call $std/math/check if (result i32) f64.const 2.0943951024223404 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000252403 f64.const -0.266656756401062 call $std/math/check @@ -22720,7 +22632,7 @@ call $std/math/check if (result i32) f64.const 2.0943951024960477 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000890726 f64.const -0.4652077853679657 call $std/math/check @@ -22743,7 +22655,7 @@ call $std/math/check if (result i32) f64.const 2.0943951025173315 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.500000000107505 f64.const -0.46710994839668274 call $std/math/check @@ -22766,7 +22678,7 @@ call $std/math/check if (result i32) f64.const 2.094395102405924 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.5000000000110234 f64.const -0.2469603717327118 call $std/math/check @@ -22789,7 +22701,7 @@ call $std/math/check if (result i32) f64.const 2.094395102428558 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.500000000030625 f64.const -0.3799441158771515 call $std/math/check @@ -22812,7 +22724,7 @@ call $std/math/check if (result i32) f64.const 8.513210770864056 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.6125076939987759 f64.const 0.4989966154098511 call $std/math/check @@ -22835,7 +22747,7 @@ call $std/math/check if (result i32) f64.const 6.802886129801017 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8679677961345452 f64.const 0.4972165524959564 call $std/math/check @@ -22858,7 +22770,7 @@ call $std/math/check if (result i32) f64.const 9.171925393086408 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9682027440424544 f64.const -0.49827584624290466 call $std/math/check @@ -22881,7 +22793,7 @@ call $std/math/check if (result i32) f64.const 8.854690112888573 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.8418535663818527 f64.const 0.4974979758262634 call $std/math/check @@ -22904,7 +22816,7 @@ call $std/math/check if (result i32) f64.const 9.213510813859608 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9777659802838506 f64.const -0.4995604455471039 call $std/math/check @@ -22927,7 +22839,7 @@ call $std/math/check if (result i32) f64.const 7.782449081542151 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.07147156381293339 f64.const 0.49858126044273376 call $std/math/check @@ -22950,7 +22862,7 @@ call $std/math/check if (result i32) f64.const 7.500261332273616 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.34639017633458113 f64.const -0.4996210038661957 call $std/math/check @@ -22973,7 +22885,7 @@ call $std/math/check if (result i32) f64.const 9.121739418731588 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.9544341297541811 f64.const 0.4982815086841583 call $std/math/check @@ -22996,7 +22908,7 @@ call $std/math/check if (result i32) f64.const 6.784954020476316 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.8767332233166646 f64.const -0.4988083839416504 call $std/math/check @@ -23019,7 +22931,7 @@ call $std/math/check if (result i32) f64.const 8.770846542666664 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const -0.7936984117400705 f64.const 0.4999682903289795 call $std/math/check @@ -23042,7 +22954,7 @@ call $std/math/check if (result i32) f64.const 9.313225746154785e-10 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0.001953125 call $std/math/check @@ -23065,7 +22977,7 @@ call $std/math/check if (result i32) f64.const -9.313225746154785e-10 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0.001953125 call $std/math/check @@ -23088,7 +23000,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072014e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23111,7 +23023,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072014e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23134,7 +23046,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23157,7 +23069,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23180,7 +23092,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23203,7 +23115,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23226,7 +23138,7 @@ call $std/math/check if (result i32) f64.const 1e-323 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23249,7 +23161,7 @@ call $std/math/check if (result i32) f64.const 4.4e-323 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23272,7 +23184,7 @@ call $std/math/check if (result i32) f64.const 5.562684646268003e-309 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23295,7 +23207,7 @@ call $std/math/check if (result i32) f64.const 1.1125369292536007e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23318,7 +23230,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072004e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23341,7 +23253,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507201e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23364,7 +23276,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507202e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23387,7 +23299,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072024e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23410,7 +23322,7 @@ call $std/math/check if (result i32) f64.const 4.4501477170144003e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23433,7 +23345,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014403e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23456,7 +23368,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014406e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23479,7 +23391,7 @@ call $std/math/check if (result i32) f64.const 8.900295434028806e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23502,7 +23414,7 @@ call $std/math/check if (result i32) f64.const 7.450580596923828e-09 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0.125 call $std/math/check @@ -23525,7 +23437,7 @@ call $std/math/check if (result i32) f64.const 1.4901161193847656e-08 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9999999999999999 f64.const -1.850372590034581e-17 call $std/math/check @@ -23548,7 +23460,7 @@ call $std/math/check if (result i32) f64.const 4.470348358154297e-08 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.999999999999999 f64.const -1.4988010832439613e-15 call $std/math/check @@ -23571,7 +23483,7 @@ call $std/math/check if (result i32) f64.const -1e-323 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23594,7 +23506,7 @@ call $std/math/check if (result i32) f64.const -4.4e-323 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23617,7 +23529,7 @@ call $std/math/check if (result i32) f64.const -5.562684646268003e-309 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23640,7 +23552,7 @@ call $std/math/check if (result i32) f64.const -1.1125369292536007e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23663,7 +23575,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072004e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23686,7 +23598,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507201e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23709,7 +23621,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507202e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23732,7 +23644,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072024e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23755,7 +23667,7 @@ call $std/math/check if (result i32) f64.const -4.4501477170144003e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23778,7 +23690,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014403e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23801,7 +23713,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014406e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23824,7 +23736,7 @@ call $std/math/check if (result i32) f64.const -8.900295434028806e-308 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0 call $std/math/check @@ -23847,7 +23759,7 @@ call $std/math/check if (result i32) f64.const -7.450580596923828e-09 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 1 f64.const 0.125 call $std/math/check @@ -23870,7 +23782,7 @@ call $std/math/check if (result i32) f64.const -1.4901161193847656e-08 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.9999999999999999 f64.const -1.850372590034581e-17 call $std/math/check @@ -23893,7 +23805,7 @@ call $std/math/check if (result i32) f64.const -4.470348358154297e-08 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.const 0.999999999999999 f64.const -1.4988010832439613e-15 call $std/math/check @@ -23912,7 +23824,7 @@ f64.const 1.5707963267948966 call $~lib/math/NativeMath.cos f64.const 1.5707963267948966 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.ne if i32.const 0 @@ -23925,7 +23837,7 @@ f64.const 3.141592653589793 call $~lib/math/NativeMath.cos f64.const 3.141592653589793 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.ne if i32.const 0 @@ -23938,7 +23850,7 @@ f64.const 3141592653589793231804887e66 call $~lib/math/NativeMath.cos f64.const 3141592653589793231804887e66 - call $~lib/bindings/Math/cos + call $~lib/bindings/dom/Math.cos f64.ne if i32.const 0 @@ -25499,7 +25411,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 3.137706068161745e-04 f64.const -0.2599197328090668 call $std/math/check @@ -25522,7 +25434,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 77.11053017112141 f64.const -0.02792675793170929 call $std/math/check @@ -25545,7 +25457,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.290813384916323e-04 f64.const -0.24974334239959717 call $std/math/check @@ -25568,7 +25480,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1.4565661260931588e-03 f64.const -0.4816822409629822 call $std/math/check @@ -25591,7 +25503,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 10583.558245524993 f64.const 0.17696762084960938 call $std/math/check @@ -25614,7 +25526,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1.9386384525571998 f64.const -0.4964246451854706 call $std/math/check @@ -25637,7 +25549,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.6659078892838025 f64.const -0.10608318448066711 call $std/math/check @@ -25660,7 +25572,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1.7537559518626311 f64.const -0.39162111282348633 call $std/math/check @@ -25683,7 +25595,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.1687528885129246 f64.const -0.2996125817298889 call $std/math/check @@ -25706,7 +25618,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.5072437089402843 f64.const 0.47261738777160645 call $std/math/check @@ -25729,7 +25641,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1 f64.const 0 call $std/math/check @@ -25752,7 +25664,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1 f64.const 0 call $std/math/check @@ -25775,7 +25687,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.718281828459045 f64.const -0.3255307376384735 call $std/math/check @@ -25798,7 +25710,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.36787944117144233 f64.const 0.22389651834964752 call $std/math/check @@ -25821,7 +25733,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const inf f64.const 0 call $std/math/check @@ -25844,7 +25756,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0 f64.const 0 call $std/math/check @@ -25867,7 +25779,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -25890,7 +25802,7 @@ call $std/math/check if (result i32) f64.const 1.0397214889526365 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.828429155876411 f64.const 0.18803080916404724 call $std/math/check @@ -25913,7 +25825,7 @@ call $std/math/check if (result i32) f64.const -1.0397214889526365 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.35355313670217847 f64.const 0.2527272403240204 call $std/math/check @@ -25936,7 +25848,7 @@ call $std/math/check if (result i32) f64.const 1.0397210121154785 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.8284278071766122 f64.const -0.4184139370918274 call $std/math/check @@ -25959,7 +25871,7 @@ call $std/math/check if (result i32) f64.const 1.0397214889526367 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.8284291558764116 f64.const -0.22618377208709717 call $std/math/check @@ -25982,7 +25894,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1 f64.const 0 call $std/math/check @@ -26005,7 +25917,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1 f64.const 0 call $std/math/check @@ -26028,7 +25940,7 @@ call $std/math/check if (result i32) f64.const 709.782712893384 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1797693134862273196746681e284 f64.const -0.10568465292453766 call $std/math/check @@ -26051,7 +25963,7 @@ call $std/math/check if (result i32) f64.const 709.7827128933841 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const inf f64.const 0 call $std/math/check @@ -26074,7 +25986,7 @@ call $std/math/check if (result i32) f64.const -745.1332191019411 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 5e-324 f64.const 0.5 call $std/math/check @@ -26097,7 +26009,7 @@ call $std/math/check if (result i32) f64.const -745.1332191019412 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0 f64.const -0.5 call $std/math/check @@ -26120,7 +26032,7 @@ call $std/math/check if (result i32) f64.const -708.3964185322641 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.2250738585072626e-308 f64.const 0.26172348856925964 call $std/math/check @@ -26143,7 +26055,7 @@ call $std/math/check if (result i32) f64.const -708.3964185322642 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.2250738585070097e-308 f64.const 2.2250738585070097e-308 call $std/math/check @@ -26166,7 +26078,7 @@ call $std/math/check if (result i32) f64.const 0.5006933289508785 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1.6498647732549399 f64.const 0.5 call $std/math/check @@ -26189,7 +26101,7 @@ call $std/math/check if (result i32) f64.const 0.628493326460252 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1.8747837631658781 f64.const 0.5 call $std/math/check @@ -26212,7 +26124,7 @@ call $std/math/check if (result i32) f64.const 0.837522455340574 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.3106351774748006 f64.const -0.5 call $std/math/check @@ -26235,7 +26147,7 @@ call $std/math/check if (result i32) f64.const 0.8504909932810999 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 2.3407958848710777 f64.const 0.5 call $std/math/check @@ -26258,7 +26170,7 @@ call $std/math/check if (result i32) f64.const 1.6270060846924657 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 5.088617001442459 f64.const 0.5 call $std/math/check @@ -26281,7 +26193,7 @@ call $std/math/check if (result i32) f64.const 1.6744336219614115 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 5.335772228886831 f64.const 0.5 call $std/math/check @@ -26304,7 +26216,7 @@ call $std/math/check if (result i32) f64.const 6.657914718791208 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 778.924964819056 f64.const 0.5 call $std/math/check @@ -26327,7 +26239,7 @@ call $std/math/check if (result i32) f64.const 11.022872793631722 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 61259.41271820104 f64.const 0.5 call $std/math/check @@ -26350,7 +26262,7 @@ call $std/math/check if (result i32) f64.const 11.411195701885317 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 90327.36165653409 f64.const 0.5 call $std/math/check @@ -26373,7 +26285,7 @@ call $std/math/check if (result i32) f64.const 11.794490387560606 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 132520.20290772576 f64.const 0.5 call $std/math/check @@ -26396,7 +26308,7 @@ call $std/math/check if (result i32) f64.const 412.83872756953286 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 1965989977109266413433084e155 f64.const 0.5 call $std/math/check @@ -26419,7 +26331,7 @@ call $std/math/check if (result i32) f64.const 510.87569028483415 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 7421526272656495968225491e197 f64.const -0.5 call $std/math/check @@ -26442,7 +26354,7 @@ call $std/math/check if (result i32) f64.const -2.6589841439772853e-14 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.9999999999999735 f64.const 0.5 call $std/math/check @@ -26465,7 +26377,7 @@ call $std/math/check if (result i32) f64.const -2.7144952952085447e-14 - call $~lib/bindings/Math/exp + call $~lib/bindings/dom/Math.exp f64.const 0.9999999999999728 f64.const -0.5 call $std/math/check @@ -26824,7 +26736,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.9996862293931839 f64.const -0.2760058343410492 call $std/math/check @@ -26847,7 +26759,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 76.11053017112141 f64.const -0.02792675793170929 call $std/math/check @@ -26870,7 +26782,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.9997709186615084 f64.const 0.10052496194839478 call $std/math/check @@ -26893,7 +26805,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.9985434338739069 f64.const -0.27437829971313477 call $std/math/check @@ -26916,7 +26828,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 10582.558245524993 f64.const 0.17696762084960938 call $std/math/check @@ -26939,7 +26851,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 0.9386384525571999 f64.const 0.007150684483349323 call $std/math/check @@ -26962,7 +26874,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.3340921107161975 f64.const -0.21216636896133423 call $std/math/check @@ -26985,7 +26897,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 0.7537559518626312 f64.const 0.21675777435302734 call $std/math/check @@ -27008,7 +26920,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 1.1687528885129248 f64.const 0.4007748067378998 call $std/math/check @@ -27031,7 +26943,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.4927562910597158 f64.const -0.05476519837975502 call $std/math/check @@ -27054,7 +26966,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 0 f64.const 0 call $std/math/check @@ -27077,7 +26989,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0 f64.const 0 call $std/math/check @@ -27100,7 +27012,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 1.7182818284590453 f64.const 0.348938524723053 call $std/math/check @@ -27123,7 +27035,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -0.6321205588285577 f64.const 0.11194825917482376 call $std/math/check @@ -27146,7 +27058,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const inf f64.const 0 call $std/math/check @@ -27169,7 +27081,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -1 f64.const 0 call $std/math/check @@ -27192,7 +27104,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -27215,7 +27127,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507201e-308 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const 2.225073858507201e-308 f64.const 0 call $std/math/check @@ -27238,7 +27150,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507201e-308 - call $~lib/bindings/Math/expm1 + call $~lib/bindings/dom/Math.expm1 f64.const -2.225073858507201e-308 f64.const 0 call $std/math/check @@ -28083,7 +27995,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -9 f64.const 0 call $std/math/check @@ -28105,7 +28017,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 4 f64.const 0 call $std/math/check @@ -28127,7 +28039,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -9 f64.const 0 call $std/math/check @@ -28149,7 +28061,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -7 f64.const 0 call $std/math/check @@ -28171,7 +28083,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 9 f64.const 0 call $std/math/check @@ -28193,7 +28105,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28215,7 +28127,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -28237,7 +28149,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28259,7 +28171,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28281,7 +28193,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -28303,7 +28215,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -28325,7 +28237,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const inf f64.const 0 call $std/math/check @@ -28347,7 +28259,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -inf f64.const 0 call $std/math/check @@ -28369,7 +28281,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28391,7 +28303,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -0 f64.const 0 call $std/math/check @@ -28413,7 +28325,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 1 f64.const 0 call $std/math/check @@ -28435,7 +28347,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -28457,7 +28369,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28479,7 +28391,7 @@ call $std/math/check if (result i32) f64.const -0.5 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -28501,7 +28413,7 @@ call $std/math/check if (result i32) f64.const 1.0000152587890625 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 1 f64.const 0 call $std/math/check @@ -28523,7 +28435,7 @@ call $std/math/check if (result i32) f64.const -1.0000152587890625 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -2 f64.const 0 call $std/math/check @@ -28545,7 +28457,7 @@ call $std/math/check if (result i32) f64.const 0.9999923706054688 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28567,7 +28479,7 @@ call $std/math/check if (result i32) f64.const -0.9999923706054688 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -28589,7 +28501,7 @@ call $std/math/check if (result i32) f64.const 7.888609052210118e-31 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const 0 f64.const 0 call $std/math/check @@ -28611,7 +28523,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/floor + call $~lib/bindings/dom/Math.floor f64.const -1 f64.const 0 call $std/math/check @@ -29799,7 +29711,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -29822,7 +29734,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const 1.4690809584224322 f64.const -0.3412533402442932 call $std/math/check @@ -29845,7 +29757,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -29868,7 +29780,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -29891,7 +29803,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const 2.2264658498795615 f64.const 0.3638114035129547 call $std/math/check @@ -29914,7 +29826,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const -0.4125110252365137 f64.const -0.29108747839927673 call $std/math/check @@ -29937,7 +29849,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -29960,7 +29872,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const -0.5766810183195862 f64.const -0.10983199626207352 call $std/math/check @@ -29983,7 +29895,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const -0.2559866591263865 f64.const -0.057990044355392456 call $std/math/check @@ -30006,7 +29918,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30029,7 +29941,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const -inf f64.const 0 call $std/math/check @@ -30052,7 +29964,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const -inf f64.const 0 call $std/math/check @@ -30075,7 +29987,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30098,7 +30010,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const 0 f64.const 0 call $std/math/check @@ -30121,7 +30033,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30144,7 +30056,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const inf f64.const 0 call $std/math/check @@ -30167,7 +30079,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30190,7 +30102,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/log + call $~lib/bindings/dom/Math.log f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30905,7 +30817,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30928,7 +30840,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 1.6762064170601734 f64.const 0.46188199520111084 call $std/math/check @@ -30951,7 +30863,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30974,7 +30886,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -30997,7 +30909,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 2.3289404168523826 f64.const -0.411114901304245 call $std/math/check @@ -31020,7 +30932,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 0.5080132114992477 f64.const -0.29306045174598694 call $std/math/check @@ -31043,7 +30955,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const -0.5218931811663979 f64.const -0.25825726985931396 call $std/math/check @@ -31066,7 +30978,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 0.4458132279488102 f64.const -0.13274887204170227 call $std/math/check @@ -31089,7 +31001,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 0.5733227294648414 f64.const 0.02716583013534546 call $std/math/check @@ -31112,7 +31024,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const -1.1355782978128564 f64.const 0.2713092863559723 call $std/math/check @@ -31135,7 +31047,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 0 f64.const 0 call $std/math/check @@ -31158,7 +31070,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const -0 f64.const 0 call $std/math/check @@ -31181,7 +31093,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const -7.888609052210118e-31 f64.const 1.7763568394002505e-15 call $std/math/check @@ -31204,7 +31116,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const 0.6931471805599453 f64.const -0.2088811695575714 call $std/math/check @@ -31227,7 +31139,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const -inf f64.const 0 call $std/math/check @@ -31250,7 +31162,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const inf f64.const 0 call $std/math/check @@ -31273,7 +31185,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31296,7 +31208,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/log1p + call $~lib/bindings/dom/Math.log1p f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31585,7 +31497,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31608,7 +31520,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const 2.1194358133804485 f64.const -0.10164877772331238 call $std/math/check @@ -31631,7 +31543,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31654,7 +31566,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31677,7 +31589,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const 3.2121112403298744 f64.const -0.15739446878433228 call $std/math/check @@ -31700,7 +31612,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const -0.5951276104207402 f64.const 0.3321485221385956 call $std/math/check @@ -31723,7 +31635,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31746,7 +31658,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const -0.8319748453044644 f64.const 0.057555437088012695 call $std/math/check @@ -31769,7 +31681,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const -0.36931068365537134 f64.const -0.19838279485702515 call $std/math/check @@ -31792,7 +31704,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31815,7 +31727,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const -inf f64.const 0 call $std/math/check @@ -31838,7 +31750,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const -inf f64.const 0 call $std/math/check @@ -31861,7 +31773,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31884,7 +31796,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const 0 f64.const 0 call $std/math/check @@ -31907,7 +31819,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31930,7 +31842,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const inf f64.const 0 call $std/math/check @@ -31953,7 +31865,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -31976,7 +31888,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/log2 + call $~lib/bindings/dom/Math.log2 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -44043,7 +43955,7 @@ call $~lib/builtins/abort unreachable end - call $~lib/bindings/Math/random + call $~lib/bindings/dom/Math.random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom loop $for-loop|0 @@ -44112,7 +44024,7 @@ br $for-loop|0 end end - call $~lib/bindings/Math/random + call $~lib/bindings/dom/Math.random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom i32.const 0 @@ -47366,7 +47278,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.9774292928781227 f64.const -0.14564912021160126 call $std/math/check @@ -47389,7 +47301,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.9333544736965718 f64.const -0.08813747018575668 call $std/math/check @@ -47412,7 +47324,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.8640924711706304 f64.const -0.11743883043527603 call $std/math/check @@ -47435,7 +47347,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.24593894772615374 f64.const -0.12697851657867432 call $std/math/check @@ -47458,7 +47370,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0.15706789772028007 f64.const -0.029550159350037575 call $std/math/check @@ -47481,7 +47393,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0.6146844860113447 f64.const -0.09976737946271896 call $std/math/check @@ -47504,7 +47416,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.39549242182823696 f64.const -0.3668774962425232 call $std/math/check @@ -47527,7 +47439,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0.5326763286672376 f64.const -0.3550407588481903 call $std/math/check @@ -47550,7 +47462,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0.6991102068649779 f64.const -0.427672415971756 call $std/math/check @@ -47573,7 +47485,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0.6278312326301215 f64.const -0.3828115463256836 call $std/math/check @@ -47596,7 +47508,7 @@ call $std/math/check if (result i32) f64.const 9.313225746154785e-10 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 9.313225746154785e-10 f64.const 6.510416860692203e-04 call $std/math/check @@ -47619,7 +47531,7 @@ call $std/math/check if (result i32) f64.const -9.313225746154785e-10 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -9.313225746154785e-10 f64.const -6.510416860692203e-04 call $std/math/check @@ -47642,7 +47554,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072014e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 2.2250738585072014e-308 f64.const 0 call $std/math/check @@ -47665,7 +47577,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072014e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -2.2250738585072014e-308 f64.const 0 call $std/math/check @@ -47688,7 +47600,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 5e-324 f64.const 0 call $std/math/check @@ -47711,7 +47623,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -5e-324 f64.const 0 call $std/math/check @@ -47734,7 +47646,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0 f64.const 0 call $std/math/check @@ -47757,7 +47669,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0 f64.const 0 call $std/math/check @@ -47780,7 +47692,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507202e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 2.225073858507202e-308 f64.const 0 call $std/math/check @@ -47803,7 +47715,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072024e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 2.2250738585072024e-308 f64.const 0 call $std/math/check @@ -47826,7 +47738,7 @@ call $std/math/check if (result i32) f64.const 4.4501477170144003e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 4.4501477170144003e-308 f64.const 0 call $std/math/check @@ -47849,7 +47761,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014403e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 4.450147717014403e-308 f64.const 0 call $std/math/check @@ -47872,7 +47784,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014406e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 4.450147717014406e-308 f64.const 0 call $std/math/check @@ -47895,7 +47807,7 @@ call $std/math/check if (result i32) f64.const 8.900295434028806e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 8.900295434028806e-308 f64.const 0 call $std/math/check @@ -47918,7 +47830,7 @@ call $std/math/check if (result i32) f64.const 1.1175870895385742e-08 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 1.1175870895385742e-08 f64.const 0.140625 call $std/math/check @@ -47941,7 +47853,7 @@ call $std/math/check if (result i32) f64.const 1.4901161193847656e-08 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 1.4901161193847656e-08 f64.const 0.1666666716337204 call $std/math/check @@ -47964,7 +47876,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507202e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -2.225073858507202e-308 f64.const 0 call $std/math/check @@ -47987,7 +47899,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072024e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -2.2250738585072024e-308 f64.const 0 call $std/math/check @@ -48010,7 +47922,7 @@ call $std/math/check if (result i32) f64.const -4.4501477170144003e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -4.4501477170144003e-308 f64.const 0 call $std/math/check @@ -48033,7 +47945,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014403e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -4.450147717014403e-308 f64.const 0 call $std/math/check @@ -48056,7 +47968,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014406e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -4.450147717014406e-308 f64.const 0 call $std/math/check @@ -48079,7 +47991,7 @@ call $std/math/check if (result i32) f64.const -8.900295434028806e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -8.900295434028806e-308 f64.const 0 call $std/math/check @@ -48102,7 +48014,7 @@ call $std/math/check if (result i32) f64.const -1.1175870895385742e-08 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -1.1175870895385742e-08 f64.const -0.140625 call $std/math/check @@ -48125,7 +48037,7 @@ call $std/math/check if (result i32) f64.const -1.4901161193847656e-08 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -1.4901161193847656e-08 f64.const -0.1666666716337204 call $std/math/check @@ -48148,7 +48060,7 @@ call $std/math/check if (result i32) f64.const -1.4901161193847656e-08 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -1.4901161193847656e-08 f64.const -0.1666666716337204 call $std/math/check @@ -48171,7 +48083,7 @@ call $std/math/check if (result i32) f64.const 1e-323 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 1e-323 f64.const 0 call $std/math/check @@ -48194,7 +48106,7 @@ call $std/math/check if (result i32) f64.const 4.4e-323 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 4.4e-323 f64.const 0 call $std/math/check @@ -48217,7 +48129,7 @@ call $std/math/check if (result i32) f64.const 5.562684646268003e-309 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 5.562684646268003e-309 f64.const 0 call $std/math/check @@ -48240,7 +48152,7 @@ call $std/math/check if (result i32) f64.const 1.1125369292536007e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 1.1125369292536007e-308 f64.const 0 call $std/math/check @@ -48263,7 +48175,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072004e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 2.2250738585072004e-308 f64.const 0 call $std/math/check @@ -48286,7 +48198,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507201e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 2.225073858507201e-308 f64.const 0 call $std/math/check @@ -48309,7 +48221,7 @@ call $std/math/check if (result i32) f64.const -1e-323 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -1e-323 f64.const 0 call $std/math/check @@ -48332,7 +48244,7 @@ call $std/math/check if (result i32) f64.const -4.4e-323 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -4.4e-323 f64.const 0 call $std/math/check @@ -48355,7 +48267,7 @@ call $std/math/check if (result i32) f64.const -5.562684646268003e-309 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -5.562684646268003e-309 f64.const 0 call $std/math/check @@ -48378,7 +48290,7 @@ call $std/math/check if (result i32) f64.const -1.1125369292536007e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -1.1125369292536007e-308 f64.const 0 call $std/math/check @@ -48401,7 +48313,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072004e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -2.2250738585072004e-308 f64.const 0 call $std/math/check @@ -48424,7 +48336,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507201e-308 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -2.225073858507201e-308 f64.const 0 call $std/math/check @@ -48447,7 +48359,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const 0 f64.const 0 call $std/math/check @@ -48470,7 +48382,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const -0 f64.const 0 call $std/math/check @@ -48493,7 +48405,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -48516,7 +48428,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -48539,7 +48451,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -48558,7 +48470,7 @@ f64.const 1.5707963267948966 call $~lib/math/NativeMath.sin f64.const 1.5707963267948966 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.ne if i32.const 0 @@ -48571,7 +48483,7 @@ f64.const 3.141592653589793 call $~lib/math/NativeMath.sin f64.const 3.141592653589793 - call $~lib/bindings/Math/sin + call $~lib/bindings/dom/Math.sin f64.ne if i32.const 0 @@ -50119,7 +50031,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50141,7 +50053,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 2.0845238903256313 f64.const -0.07180261611938477 call $std/math/check @@ -50163,7 +50075,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50185,7 +50097,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50207,7 +50119,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 3.0441841217266385 f64.const -0.01546262577176094 call $std/math/check @@ -50229,7 +50141,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0.8136251582267503 f64.const -0.08618157356977463 call $std/math/check @@ -50251,7 +50163,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50273,7 +50185,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0.7495063350104014 f64.const -0.0981396734714508 call $std/math/check @@ -50295,7 +50207,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0.879859248170583 f64.const -0.37124353647232056 call $std/math/check @@ -50317,7 +50229,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50339,7 +50251,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50361,7 +50273,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const inf f64.const 0 call $std/math/check @@ -50383,7 +50295,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50405,7 +50317,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0 f64.const 0 call $std/math/check @@ -50427,7 +50339,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const -0 f64.const 0 call $std/math/check @@ -50449,7 +50361,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1 f64.const 0 call $std/math/check @@ -50471,7 +50383,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50493,7 +50405,7 @@ call $std/math/check if (result i32) f64.const 4 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 2 f64.const 0 call $std/math/check @@ -50515,7 +50427,7 @@ call $std/math/check if (result i32) f64.const 1e-323 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 3.1434555694052576e-162 f64.const 0.43537619709968567 call $std/math/check @@ -50537,7 +50449,7 @@ call $std/math/check if (result i32) f64.const 1.5e-323 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 3.849931087076416e-162 f64.const -0.45194002985954285 call $std/math/check @@ -50559,7 +50471,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 2.2227587494850775e-162 f64.const 0 call $std/math/check @@ -50581,7 +50493,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50603,7 +50515,7 @@ call $std/math/check if (result i32) f64.const 0.9999999999999999 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0.9999999999999999 f64.const -0.5 call $std/math/check @@ -50625,7 +50537,7 @@ call $std/math/check if (result i32) f64.const 1.9999999999999998 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.414213562373095 f64.const -0.21107041835784912 call $std/math/check @@ -50647,7 +50559,7 @@ call $std/math/check if (result i32) f64.const 1.0000000000000002 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1 f64.const -0.5 call $std/math/check @@ -50669,7 +50581,7 @@ call $std/math/check if (result i32) f64.const 2.0000000000000004 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4142135623730951 f64.const -0.27173060178756714 call $std/math/check @@ -50691,7 +50603,7 @@ call $std/math/check if (result i32) f64.const 1.0000000000000002 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1 f64.const -0.5 call $std/math/check @@ -50713,7 +50625,7 @@ call $std/math/check if (result i32) f64.const 0.9999999999999999 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 0.9999999999999999 f64.const -0.5 call $std/math/check @@ -50735,7 +50647,7 @@ call $std/math/check if (result i32) f64.const -1797693134862315708145274e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50757,7 +50669,7 @@ call $std/math/check if (result i32) f64.const 1797693134862315708145274e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994259561100831e130 f64.const -0.5 call $std/math/check @@ -50779,7 +50691,7 @@ call $std/math/check if (result i32) f64.const 179769313486231490980915e285 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 134078079299425926338769e131 f64.const -0.5 call $std/math/check @@ -50801,7 +50713,7 @@ call $std/math/check if (result i32) f64.const 1797693134862314111473026e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994258965674548e130 f64.const -0.5 call $std/math/check @@ -50823,7 +50735,7 @@ call $std/math/check if (result i32) f64.const 1797693134862313313136902e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994258667961407e130 f64.const -0.5 call $std/math/check @@ -50845,7 +50757,7 @@ call $std/math/check if (result i32) f64.const 1797693134862312514800778e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994258370248265e130 f64.const -0.5 call $std/math/check @@ -50867,7 +50779,7 @@ call $std/math/check if (result i32) f64.const 1797693134862311716464655e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994258072535124e130 f64.const -0.5 call $std/math/check @@ -50889,7 +50801,7 @@ call $std/math/check if (result i32) f64.const 1797693134862310918128531e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994257774821982e130 f64.const -0.5 call $std/math/check @@ -50911,7 +50823,7 @@ call $std/math/check if (result i32) f64.const 1797693134862310119792407e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994257477108841e130 f64.const -0.5 call $std/math/check @@ -50933,7 +50845,7 @@ call $std/math/check if (result i32) f64.const 1797693134862309321456283e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994257179395699e130 f64.const -0.5 call $std/math/check @@ -50955,7 +50867,7 @@ call $std/math/check if (result i32) f64.const 1797693134862308523120159e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994256881682558e130 f64.const -0.5 call $std/math/check @@ -50977,7 +50889,7 @@ call $std/math/check if (result i32) f64.const 1797693134862307724784036e284 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1340780792994256583969417e130 f64.const -0.5 call $std/math/check @@ -50999,7 +50911,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507203e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400417e-154 f64.const -0.5 call $std/math/check @@ -51021,7 +50933,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507205e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400423e-154 f64.const -0.5 call $std/math/check @@ -51043,7 +50955,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507207e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.491668146240043e-154 f64.const -0.5 call $std/math/check @@ -51065,7 +50977,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507209e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400437e-154 f64.const -0.5 call $std/math/check @@ -51087,7 +50999,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507211e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400443e-154 f64.const -0.5 call $std/math/check @@ -51109,7 +51021,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072127e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.491668146240045e-154 f64.const -0.5 call $std/math/check @@ -51131,7 +51043,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072147e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400457e-154 f64.const -0.5 call $std/math/check @@ -51153,7 +51065,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072167e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400463e-154 f64.const -0.5 call $std/math/check @@ -51175,7 +51087,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072187e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.491668146240047e-154 f64.const -0.5 call $std/math/check @@ -51197,7 +51109,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072207e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400476e-154 f64.const -0.5 call $std/math/check @@ -51219,7 +51131,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072226e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400483e-154 f64.const -0.5 call $std/math/check @@ -51241,7 +51153,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072246e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.491668146240049e-154 f64.const -0.5 call $std/math/check @@ -51263,7 +51175,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072266e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400496e-154 f64.const -0.5 call $std/math/check @@ -51285,7 +51197,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072286e-308 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4916681462400503e-154 f64.const -0.5 call $std/math/check @@ -51307,7 +51219,7 @@ call $std/math/check if (result i32) f64.const 92.35130391890645 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.609958580499006 f64.const 0.4998137056827545 call $std/math/check @@ -51329,7 +51241,7 @@ call $std/math/check if (result i32) f64.const 93.3599596388916 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.662295774757238 f64.const -0.49979978799819946 call $std/math/check @@ -51351,7 +51263,7 @@ call $std/math/check if (result i32) f64.const 95.42049628886124 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.76834153215689 f64.const -0.49997270107269287 call $std/math/check @@ -51373,7 +51285,7 @@ call $std/math/check if (result i32) f64.const 95.87916941885449 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.791790919890728 f64.const 0.4998766779899597 call $std/math/check @@ -51395,7 +51307,7 @@ call $std/math/check if (result i32) f64.const 96.84804174884022 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.841140266698785 f64.const 0.499801903963089 call $std/math/check @@ -51417,7 +51329,7 @@ call $std/math/check if (result i32) f64.const 97.43639050883155 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.87098731175517 f64.const 0.4997696280479431 call $std/math/check @@ -51439,7 +51351,7 @@ call $std/math/check if (result i32) f64.const 97.50957979883047 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.874693909120955 f64.const 0.49999818205833435 call $std/math/check @@ -51461,7 +51373,7 @@ call $std/math/check if (result i32) f64.const 97.80496893882612 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.88963947466368 f64.const -0.4999580681324005 call $std/math/check @@ -51483,7 +51395,7 @@ call $std/math/check if (result i32) f64.const 98.2751822888192 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.913383997849534 f64.const 0.49979931116104126 call $std/math/check @@ -51505,7 +51417,7 @@ call $std/math/check if (result i32) f64.const 99.47293564880155 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.973611966023219 f64.const -0.4999540448188782 call $std/math/check @@ -51527,7 +51439,7 @@ call $std/math/check if (result i32) f64.const 100.57047130878539 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 10.028483001370914 f64.const -0.49996453523635864 call $std/math/check @@ -51549,7 +51461,7 @@ call $std/math/check if (result i32) f64.const 100.60954608878481 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 10.030431002144665 f64.const 0.49975672364234924 call $std/math/check @@ -51571,7 +51483,7 @@ call $std/math/check if (result i32) f64.const 100.67909109878379 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 10.033897104255344 f64.const -0.4997771382331848 call $std/math/check @@ -51593,7 +51505,7 @@ call $std/math/check if (result i32) f64.const 101.12268095877725 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 10.055977374615422 f64.const 0.49988678097724915 call $std/math/check @@ -51615,7 +51527,7 @@ call $std/math/check if (result i32) f64.const 101.3027691287746 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 10.064927676281366 f64.const 0.4999105632305145 call $std/math/check @@ -51637,7 +51549,7 @@ call $std/math/check if (result i32) f64.const 2.45932313565507e-307 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 4.9591563149945874e-154 f64.const -0.4998999834060669 call $std/math/check @@ -51659,7 +51571,7 @@ call $std/math/check if (result i32) f64.const 5.610957305180409e-307 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 7.490632353266584e-154 f64.const -0.4999343752861023 call $std/math/check @@ -51681,7 +51593,7 @@ call $std/math/check if (result i32) f64.const 5.8073887977408524e-307 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 7.62062254526548e-154 f64.const -0.49989569187164307 call $std/math/check @@ -51703,7 +51615,7 @@ call $std/math/check if (result i32) f64.const 7.026137080471427e-307 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 8.382205605013174e-154 f64.const 0.49980640411376953 call $std/math/check @@ -51725,7 +51637,7 @@ call $std/math/check if (result i32) f64.const 8.438697769194972e-307 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 9.186238495268328e-154 f64.const -0.4999065697193146 call $std/math/check @@ -51747,7 +51659,7 @@ call $std/math/check if (result i32) f64.const 1.1607792515836795e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.0773946591586944e-153 f64.const -0.49997684359550476 call $std/math/check @@ -51769,7 +51681,7 @@ call $std/math/check if (result i32) f64.const 1.2827413827423193e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.1325817333606962e-153 f64.const -0.4999513030052185 call $std/math/check @@ -51791,7 +51703,7 @@ call $std/math/check if (result i32) f64.const 1.7116604596087457e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.3083044216117078e-153 f64.const -0.49986395239830017 call $std/math/check @@ -51813,7 +51725,7 @@ call $std/math/check if (result i32) f64.const 2.038173251686994e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4276460526639628e-153 f64.const 0.4998403787612915 call $std/math/check @@ -51835,7 +51747,7 @@ call $std/math/check if (result i32) f64.const 2.171572060856931e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.4736254818836879e-153 f64.const 0.4999290406703949 call $std/math/check @@ -51857,7 +51769,7 @@ call $std/math/check if (result i32) f64.const 2.4681399631804094e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.5710314965589996e-153 f64.const 0.49989044666290283 call $std/math/check @@ -51879,7 +51791,7 @@ call $std/math/check if (result i32) f64.const 2.5175533964200588e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.5866799918131124e-153 f64.const -0.4997701048851013 call $std/math/check @@ -51901,7 +51813,7 @@ call $std/math/check if (result i32) f64.const 2.6461505468829625e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.6266992797941982e-153 f64.const 0.4998672902584076 call $std/math/check @@ -51923,7 +51835,7 @@ call $std/math/check if (result i32) f64.const 3.8167076367720413e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 1.9536395872248397e-153 f64.const 0.49983471632003784 call $std/math/check @@ -51945,7 +51857,7 @@ call $std/math/check if (result i32) f64.const 4.5743220778562766e-306 - call $~lib/bindings/Math/sqrt + call $~lib/bindings/dom/Math.sqrt f64.const 2.1387664851161936e-153 f64.const 0.49985939264297485 call $std/math/check @@ -52384,7 +52296,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 4.626603542401633 f64.const -0.2727603316307068 call $std/math/check @@ -52407,7 +52319,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.600191705822202 f64.const 0.2651003301143646 call $std/math/check @@ -52430,7 +52342,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 1.7167408328741052 f64.const -0.24687519669532776 call $std/math/check @@ -52453,7 +52365,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0.2537322523453725 f64.const -0.4679703712463379 call $std/math/check @@ -52476,7 +52388,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0.15904195727191958 f64.const -0.06704077869653702 call $std/math/check @@ -52499,7 +52411,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0.7792919106910434 f64.const -0.038056135177612305 call $std/math/check @@ -52522,7 +52434,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0.43059952879543656 f64.const -0.09242714196443558 call $std/math/check @@ -52545,7 +52457,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0.62940368731874 f64.const -0.321913480758667 call $std/math/check @@ -52568,7 +52480,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0.9777574652949645 f64.const -0.1966651827096939 call $std/math/check @@ -52591,7 +52503,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0.8066186630209123 f64.const -0.067665696144104 call $std/math/check @@ -52614,7 +52526,7 @@ call $std/math/check if (result i32) f64.const 9.313225746154785e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 9.313225746154785e-10 f64.const -1.3020833721384406e-03 call $std/math/check @@ -52637,7 +52549,7 @@ call $std/math/check if (result i32) f64.const -9.313225746154785e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -9.313225746154785e-10 f64.const 1.3020833721384406e-03 call $std/math/check @@ -52660,7 +52572,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072014e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.2250738585072014e-308 f64.const 0 call $std/math/check @@ -52683,7 +52595,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072014e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -2.2250738585072014e-308 f64.const 0 call $std/math/check @@ -52706,7 +52618,7 @@ call $std/math/check if (result i32) f64.const 5e-324 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 5e-324 f64.const 0 call $std/math/check @@ -52729,7 +52641,7 @@ call $std/math/check if (result i32) f64.const -5e-324 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -5e-324 f64.const 0 call $std/math/check @@ -52752,7 +52664,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0 f64.const 0 call $std/math/check @@ -52775,7 +52687,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0 f64.const 0 call $std/math/check @@ -52798,7 +52710,7 @@ call $std/math/check if (result i32) f64.const 0.7853981633974483 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0.9999999999999999 f64.const -0.4484681189060211 call $std/math/check @@ -52821,7 +52733,7 @@ call $std/math/check if (result i32) f64.const -0.7853981633974483 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0.9999999999999999 f64.const 0.4484681189060211 call $std/math/check @@ -52844,7 +52756,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507202e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.225073858507202e-308 f64.const 0 call $std/math/check @@ -52867,7 +52779,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072024e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.2250738585072024e-308 f64.const 0 call $std/math/check @@ -52890,7 +52802,7 @@ call $std/math/check if (result i32) f64.const 4.4501477170144003e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 4.4501477170144003e-308 f64.const 0 call $std/math/check @@ -52913,7 +52825,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014403e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 4.450147717014403e-308 f64.const 0 call $std/math/check @@ -52936,7 +52848,7 @@ call $std/math/check if (result i32) f64.const 4.450147717014406e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 4.450147717014406e-308 f64.const 0 call $std/math/check @@ -52959,7 +52871,7 @@ call $std/math/check if (result i32) f64.const 8.900295434028806e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 8.900295434028806e-308 f64.const 0 call $std/math/check @@ -52982,7 +52894,7 @@ call $std/math/check if (result i32) f64.const 1.1175870895385742e-08 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 1.1175870895385742e-08 f64.const -0.28125 call $std/math/check @@ -53005,7 +52917,7 @@ call $std/math/check if (result i32) f64.const 1.4901161193847656e-08 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 1.4901161193847656e-08 f64.const -0.3333333432674408 call $std/math/check @@ -53028,7 +52940,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507202e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -2.225073858507202e-308 f64.const 0 call $std/math/check @@ -53051,7 +52963,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072024e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -2.2250738585072024e-308 f64.const 0 call $std/math/check @@ -53074,7 +52986,7 @@ call $std/math/check if (result i32) f64.const -4.4501477170144003e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -4.4501477170144003e-308 f64.const 0 call $std/math/check @@ -53097,7 +53009,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014403e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -4.450147717014403e-308 f64.const 0 call $std/math/check @@ -53120,7 +53032,7 @@ call $std/math/check if (result i32) f64.const -4.450147717014406e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -4.450147717014406e-308 f64.const 0 call $std/math/check @@ -53143,7 +53055,7 @@ call $std/math/check if (result i32) f64.const -8.900295434028806e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -8.900295434028806e-308 f64.const 0 call $std/math/check @@ -53166,7 +53078,7 @@ call $std/math/check if (result i32) f64.const -1.1175870895385742e-08 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -1.1175870895385742e-08 f64.const 0.28125 call $std/math/check @@ -53189,7 +53101,7 @@ call $std/math/check if (result i32) f64.const -1.4901161193847656e-08 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -1.4901161193847656e-08 f64.const 0.3333333432674408 call $std/math/check @@ -53212,7 +53124,7 @@ call $std/math/check if (result i32) f64.const 1e-323 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 1e-323 f64.const 0 call $std/math/check @@ -53235,7 +53147,7 @@ call $std/math/check if (result i32) f64.const 4.4e-323 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 4.4e-323 f64.const 0 call $std/math/check @@ -53258,7 +53170,7 @@ call $std/math/check if (result i32) f64.const 5.562684646268003e-309 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 5.562684646268003e-309 f64.const 0 call $std/math/check @@ -53281,7 +53193,7 @@ call $std/math/check if (result i32) f64.const 1.1125369292536007e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 1.1125369292536007e-308 f64.const 0 call $std/math/check @@ -53304,7 +53216,7 @@ call $std/math/check if (result i32) f64.const 2.2250738585072004e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.2250738585072004e-308 f64.const 0 call $std/math/check @@ -53327,7 +53239,7 @@ call $std/math/check if (result i32) f64.const 2.225073858507201e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 2.225073858507201e-308 f64.const 0 call $std/math/check @@ -53350,7 +53262,7 @@ call $std/math/check if (result i32) f64.const -1e-323 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -1e-323 f64.const 0 call $std/math/check @@ -53373,7 +53285,7 @@ call $std/math/check if (result i32) f64.const -4.4e-323 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -4.4e-323 f64.const 0 call $std/math/check @@ -53396,7 +53308,7 @@ call $std/math/check if (result i32) f64.const -5.562684646268003e-309 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -5.562684646268003e-309 f64.const 0 call $std/math/check @@ -53419,7 +53331,7 @@ call $std/math/check if (result i32) f64.const -1.1125369292536007e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -1.1125369292536007e-308 f64.const 0 call $std/math/check @@ -53442,7 +53354,7 @@ call $std/math/check if (result i32) f64.const -2.2250738585072004e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -2.2250738585072004e-308 f64.const 0 call $std/math/check @@ -53465,7 +53377,7 @@ call $std/math/check if (result i32) f64.const -2.225073858507201e-308 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -2.225073858507201e-308 f64.const 0 call $std/math/check @@ -53484,7 +53396,7 @@ f64.const 2.3283064365386963e-10 call $~lib/math/NativeMath.tan f64.const 2.3283064365386963e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53497,7 +53409,7 @@ f64.const -2.3283064365386963e-10 call $~lib/math/NativeMath.tan f64.const -2.3283064365386963e-10 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53510,7 +53422,7 @@ f64.const 0.6875 call $~lib/math/NativeMath.tan f64.const 0.6875 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53523,7 +53435,7 @@ f64.const -0.6875 call $~lib/math/NativeMath.tan f64.const -0.6875 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53536,7 +53448,7 @@ f64.const 0.39269908169872414 call $~lib/math/NativeMath.tan f64.const 0.39269908169872414 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53549,7 +53461,7 @@ f64.const 0.6743358 call $~lib/math/NativeMath.tan f64.const 0.6743358 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53562,7 +53474,7 @@ f64.const 3.725290298461914e-09 call $~lib/math/NativeMath.tan f64.const 3.725290298461914e-09 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53575,7 +53487,7 @@ f64.const 1.5707963267948966 call $~lib/math/NativeMath.tan f64.const 1.5707963267948966 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53588,7 +53500,7 @@ f64.const 0.5 call $~lib/math/NativeMath.tan f64.const 0.5 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53601,7 +53513,7 @@ f64.const 1.107148717794091 call $~lib/math/NativeMath.tan f64.const 1.107148717794091 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53614,7 +53526,7 @@ f64.const 5.497787143782138 call $~lib/math/NativeMath.tan f64.const 5.497787143782138 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53627,7 +53539,7 @@ f64.const 7.0685834705770345 call $~lib/math/NativeMath.tan f64.const 7.0685834705770345 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53640,7 +53552,7 @@ f64.const 1647099.3291652855 call $~lib/math/NativeMath.tan f64.const 1647099.3291652855 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53653,7 +53565,7 @@ f64.const 1647097.7583689587 call $~lib/math/NativeMath.tan f64.const 1647097.7583689587 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53666,7 +53578,7 @@ f64.const 1329227995784915872903807e12 call $~lib/math/NativeMath.tan f64.const 1329227995784915872903807e12 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53679,7 +53591,7 @@ f64.const -1329227995784915872903807e12 call $~lib/math/NativeMath.tan f64.const -1329227995784915872903807e12 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.ne if i32.const 0 @@ -53696,7 +53608,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const 0 f64.const 0 call $std/math/check @@ -53719,7 +53631,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const -0 f64.const 0 call $std/math/check @@ -53742,7 +53654,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -53765,7 +53677,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -53788,7 +53700,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/tan + call $~lib/bindings/dom/Math.tan f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -54914,7 +54826,7 @@ call $std/math/check if (result i32) f64.const -8.06684839057968 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -8 f64.const 0 call $std/math/check @@ -54936,7 +54848,7 @@ call $std/math/check if (result i32) f64.const 4.345239849338305 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 4 f64.const 0 call $std/math/check @@ -54958,7 +54870,7 @@ call $std/math/check if (result i32) f64.const -8.38143342755525 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -8 f64.const 0 call $std/math/check @@ -54980,7 +54892,7 @@ call $std/math/check if (result i32) f64.const -6.531673581913484 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -6 f64.const 0 call $std/math/check @@ -55002,7 +54914,7 @@ call $std/math/check if (result i32) f64.const 9.267056966972586 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 9 f64.const 0 call $std/math/check @@ -55024,7 +54936,7 @@ call $std/math/check if (result i32) f64.const 0.6619858980995045 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55046,7 +54958,7 @@ call $std/math/check if (result i32) f64.const -0.4066039223853553 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check @@ -55068,7 +54980,7 @@ call $std/math/check if (result i32) f64.const 0.5617597462207241 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55090,7 +55002,7 @@ call $std/math/check if (result i32) f64.const 0.7741522965913037 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55112,7 +55024,7 @@ call $std/math/check if (result i32) f64.const -0.6787637026394024 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check @@ -55134,7 +55046,7 @@ call $std/math/check if (result i32) f64.const nan:0x8000000000000 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -55156,7 +55068,7 @@ call $std/math/check if (result i32) f64.const inf - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const inf f64.const 0 call $std/math/check @@ -55178,7 +55090,7 @@ call $std/math/check if (result i32) f64.const -inf - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -inf f64.const 0 call $std/math/check @@ -55200,7 +55112,7 @@ call $std/math/check if (result i32) f64.const 0 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55222,7 +55134,7 @@ call $std/math/check if (result i32) f64.const -0 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check @@ -55244,7 +55156,7 @@ call $std/math/check if (result i32) f64.const 1 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 1 f64.const 0 call $std/math/check @@ -55266,7 +55178,7 @@ call $std/math/check if (result i32) f64.const -1 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -1 f64.const 0 call $std/math/check @@ -55288,7 +55200,7 @@ call $std/math/check if (result i32) f64.const 0.5 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55310,7 +55222,7 @@ call $std/math/check if (result i32) f64.const -0.5 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check @@ -55332,7 +55244,7 @@ call $std/math/check if (result i32) f64.const 1.0000152587890625 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 1 f64.const 0 call $std/math/check @@ -55354,7 +55266,7 @@ call $std/math/check if (result i32) f64.const -1.0000152587890625 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -1 f64.const 0 call $std/math/check @@ -55376,7 +55288,7 @@ call $std/math/check if (result i32) f64.const 0.9999923706054688 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55398,7 +55310,7 @@ call $std/math/check if (result i32) f64.const -0.9999923706054688 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check @@ -55420,7 +55332,7 @@ call $std/math/check if (result i32) f64.const 7.888609052210118e-31 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const 0 f64.const 0 call $std/math/check @@ -55442,7 +55354,7 @@ call $std/math/check if (result i32) f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/trunc + call $~lib/bindings/dom/Math.trunc f64.const -0 f64.const 0 call $std/math/check diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.debug.wat similarity index 100% rename from tests/compiler/std/mod.untouched.wat rename to tests/compiler/std/mod.debug.wat diff --git a/tests/compiler/std/mod.js b/tests/compiler/std/mod.js index b2814c4ffd..3d83dd24c3 100644 --- a/tests/compiler/std/mod.js +++ b/tests/compiler/std/mod.js @@ -1,5 +1,5 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.mod = { mod: function(a, b) { return a % b; } }; -}; +} diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.release.wat similarity index 98% rename from tests/compiler/std/mod.optimized.wat rename to tests/compiler/std/mod.release.wat index 63f17f2fce..aa4644a291 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.release.wat @@ -20,7 +20,6 @@ (local $7 i64) (local $8 i64) (local $9 i64) - (local $10 i64) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 @@ -37,25 +36,25 @@ drop local.get $1 i64.reinterpret_f64 - local.tee $8 + local.tee $6 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $9 - local.get $8 + local.set $8 + local.get $6 i64.const 1 i64.shl - local.tee $6 + local.tee $5 i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $5 + local.tee $7 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $10 + local.tee $9 i64.const 2047 i64.eq i32.or @@ -72,8 +71,8 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $6 local.get $5 + local.get $7 i64.const 1 i64.shl local.tee $3 @@ -81,53 +80,50 @@ if local.get $0 local.get $3 - local.get $6 + local.get $5 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $5 - i64.const 63 - i64.shr_u - local.get $10 + local.get $9 i64.eqz if (result i64) - local.get $5 + local.get $7 i64.const 1 - local.get $10 - local.get $5 + local.get $9 + local.get $7 i64.const 12 i64.shl i64.clz i64.sub - local.tee $10 + local.tee $9 i64.sub i64.shl else - local.get $5 + local.get $7 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $9 + local.get $8 i64.eqz if (result i64) - local.get $8 + local.get $6 i64.const 1 - local.get $9 local.get $8 + local.get $6 i64.const 12 i64.shl i64.clz i64.sub - local.tee $9 + local.tee $8 i64.sub i64.shl else - local.get $8 + local.get $6 i64.const 4503599627370495 i64.and i64.const 4503599627370496 @@ -135,8 +131,8 @@ end local.set $5 loop $while-continue|0 + local.get $8 local.get $9 - local.get $10 i64.lt_s if local.get $3 @@ -160,10 +156,10 @@ i64.const 1 i64.shl local.set $3 - local.get $10 + local.get $9 i64.const 1 i64.sub - local.set $10 + local.set $9 br $while-continue|0 end end @@ -184,7 +180,7 @@ i64.sub local.set $3 end - local.get $10 + local.get $9 local.get $3 i64.const 11 i64.shl @@ -192,6 +188,9 @@ local.tee $6 i64.sub local.set $5 + local.get $7 + i64.const 63 + i64.shr_u i64.const 63 i64.shl local.get $3 @@ -280,7 +279,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMathf.mod (result f32) local.get $0 @@ -297,28 +295,28 @@ drop local.get $1 i32.reinterpret_f32 - local.tee $7 + local.tee $5 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $8 + local.set $7 i32.const 1 local.get $1 local.get $1 f32.ne local.get $0 i32.reinterpret_f32 - local.tee $5 + local.tee $6 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $9 + local.tee $8 i32.const 255 i32.eq i32.const 1 - local.get $7 + local.get $5 i32.const 1 i32.shl local.tee $4 @@ -334,7 +332,7 @@ br $__inlined_func$~lib/math/NativeMathf.mod end local.get $4 - local.get $5 + local.get $6 i32.const 1 i32.shl local.tee $3 @@ -348,55 +346,51 @@ f32.mul br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $5 - i32.const -2147483648 - i32.and - local.set $6 - local.get $9 + local.get $8 if (result i32) - local.get $5 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $5 + local.get $6 i32.const 1 - local.get $9 - local.get $5 + local.get $8 + local.get $6 i32.const 9 i32.shl i32.clz i32.sub - local.tee $9 + local.tee $8 i32.sub i32.shl end local.set $3 - local.get $8 + local.get $7 if (result i32) - local.get $7 + local.get $5 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $7 + local.get $5 i32.const 1 - local.get $8 local.get $7 + local.get $5 i32.const 9 i32.shl i32.clz i32.sub - local.tee $8 + local.tee $7 i32.sub i32.shl end local.set $4 loop $while-continue|0 + local.get $7 local.get $8 - local.get $9 i32.lt_s if local.get $3 @@ -420,10 +414,10 @@ i32.const 1 i32.shl local.set $3 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.set $9 + local.set $8 br $while-continue|0 end end @@ -444,7 +438,7 @@ i32.sub local.set $3 end - local.get $9 + local.get $8 local.get $3 i32.const 8 i32.shl @@ -452,6 +446,9 @@ local.tee $5 i32.sub local.set $4 + local.get $6 + i32.const -2147483648 + i32.and local.get $3 local.get $5 i32.shl @@ -471,7 +468,6 @@ i32.const 0 i32.gt_s select - local.get $6 i32.or f32.reinterpret_i32 end diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.debug.wat similarity index 91% rename from tests/compiler/std/new.untouched.wat rename to tests/compiler/std/new.debug.wat index 3478dd091c..c61671ffec 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -25,8 +25,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 452)) @@ -2076,237 +2075,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2356,7 +2124,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $start:std/new diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.release.wat similarity index 98% rename from tests/compiler/std/new.optimized.wat rename to tests/compiler/std/new.release.wat index de1df4d111..7864628fe1 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.release.wat @@ -1277,40 +1277,8 @@ i32.const 20 i32.add local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 + i64.const 0 + i64.store align=1 local.get $2 local.get $0 i32.store diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.debug.wat similarity index 99% rename from tests/compiler/std/object.untouched.wat rename to tests/compiler/std/object.debug.wat index f36d38346e..62a21402f5 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.debug.wat @@ -10,7 +10,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) (global $~lib/memory/__heap_base i32 (i32.const 16572)) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.release.wat similarity index 100% rename from tests/compiler/std/object.optimized.wat rename to tests/compiler/std/object.release.wat diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.debug.wat similarity index 96% rename from tests/compiler/std/operator-overloading.untouched.wat rename to tests/compiler/std/operator-overloading.debug.wat index 34dfb694fb..295fb217ce 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.debug.wat @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) (global $std/operator-overloading/a (mut i32) (i32.const 0)) @@ -41,6 +40,7 @@ (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)) @@ -2130,237 +2130,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2410,7 +2179,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $std/operator-overloading/Tester#set:x (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.release.wat similarity index 99% rename from tests/compiler/std/operator-overloading.optimized.wat rename to tests/compiler/std/operator-overloading.release.wat index ad5f943b49..5cab11726a 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -1284,41 +1284,8 @@ i32.const 20 i32.add local.tee $0 - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 + i64.const 0 + i64.store align=1 local.get $0 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/std/pointer.debug.wat b/tests/compiler/std/pointer.debug.wat new file mode 100644 index 0000000000..ca5a7e04ff --- /dev/null +++ b/tests/compiler/std/pointer.debug.wat @@ -0,0 +1,649 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/pointer/one (mut i32) (i32.const 0)) + (global $std/pointer/two (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 $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 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $std/pointer/Entry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/pointer/Entry#set:val (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $start:std/pointer + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + i32.const 0 + local.set $1 + i32.const 8 + local.set $0 + local.get $0 + global.set $std/pointer/one + i32.const 0 + local.set $1 + i32.const 24 + local.set $0 + local.get $0 + global.set $std/pointer/two + global.get $std/pointer/one + local.set $0 + local.get $0 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + local.set $1 + local.get $1 + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.0 (result i32) + global.get $std/pointer/one + local.set $0 + i32.const 1 + drop + local.get $0 + br $std/pointer/Pointer#get:value|inlined.0 + end + i32.const 1 + call $std/pointer/Entry#set:key + block $std/pointer/Pointer#get:value|inlined.1 (result i32) + global.get $std/pointer/one + local.set $1 + i32.const 1 + drop + local.get $1 + br $std/pointer/Pointer#get:value|inlined.1 + end + i32.const 2 + call $std/pointer/Entry#set:val + block $std/pointer/Pointer#get:value|inlined.2 (result i32) + global.get $std/pointer/one + local.set $0 + i32.const 1 + drop + local.get $0 + br $std/pointer/Pointer#get:value|inlined.2 + end + i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.3 (result i32) + global.get $std/pointer/one + local.set $1 + i32.const 1 + drop + local.get $1 + br $std/pointer/Pointer#get:value|inlined.3 + end + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $1 + global.get $std/pointer/two + local.set $0 + local.get $1 + local.get $0 + i32.add + global.set $std/pointer/add + global.get $std/pointer/add + local.set $0 + local.get $0 + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + local.set $0 + global.get $std/pointer/one + local.set $1 + local.get $0 + local.get $1 + i32.sub + global.set $std/pointer/sub + global.get $std/pointer/sub + local.set $1 + local.get $1 + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $0 + local.get $0 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $1 + local.get $1 + i32.const 8 + i32.add + global.set $std/pointer/one + global.get $std/pointer/one + global.set $std/pointer/nextOne + global.get $std/pointer/nextOne + global.get $std/pointer/one + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $0 + local.get $0 + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + local.set $1 + local.get $1 + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + local.set $0 + local.get $0 + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + local.set $1 + local.get $1 + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + local.set $0 + local.get $0 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.4 (result i32) + global.get $std/pointer/two + local.set $1 + i32.const 1 + drop + local.get $1 + br $std/pointer/Pointer#get:value|inlined.4 + end + i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.5 (result i32) + global.get $std/pointer/two + local.set $0 + i32.const 1 + drop + local.get $0 + br $std/pointer/Pointer#get:value|inlined.5 + end + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $2 + block $std/pointer/Pointer#get:value|inlined.6 (result i32) + global.get $std/pointer/two + local.set $1 + i32.const 1 + drop + local.get $1 + br $std/pointer/Pointer#get:value|inlined.6 + end + local.set $0 + i32.const 1 + drop + i32.const 0 + drop + local.get $0 + i32.const 0 + i32.eq + if + local.get $2 + i32.const 0 + i32.const 8 + memory.fill + else + local.get $2 + local.get $0 + i32.const 8 + memory.copy + end + global.get $std/pointer/one + local.set $1 + local.get $1 + global.get $std/pointer/two + local.set $0 + local.get $0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.7 (result i32) + global.get $std/pointer/one + local.set $2 + i32.const 1 + drop + local.get $2 + br $std/pointer/Pointer#get:value|inlined.7 + end + i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.8 (result i32) + global.get $std/pointer/one + local.set $1 + i32.const 1 + drop + local.get $1 + br $std/pointer/Pointer#get:value|inlined.8 + end + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + i32.const 0 + local.set $0 + local.get $0 + global.set $std/pointer/buf + global.get $std/pointer/buf + local.set $0 + i32.const 0 + local.set $1 + f32.const 1.100000023841858 + local.set $3 + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $3 + f32.store + global.get $std/pointer/buf + local.set $1 + i32.const 1 + local.set $2 + f32.const 1.2000000476837158 + local.set $3 + local.get $1 + local.get $2 + i32.const 4 + i32.mul + i32.add + local.get $3 + f32.store + global.get $std/pointer/buf + local.set $2 + i32.const 0 + local.set $0 + local.get $2 + local.get $0 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $0 + i32.const 1 + local.set $1 + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $1 + i32.const 0 + local.set $2 + local.get $1 + local.get $2 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $2 + i32.const 1 + local.set $0 + local.get $2 + local.get $0 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $0 + i32.const 2 + local.set $1 + f32.const 1.2999999523162842 + local.set $3 + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $3 + f32.store + global.get $std/pointer/buf + local.set $1 + i32.const 2 + local.set $2 + local.get $1 + local.get $2 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $2 + i32.const 2 + local.set $0 + local.get $2 + local.get $0 + i32.const 4 + i32.mul + i32.add + f32.load + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $1 + f32.const 1.399999976158142 + local.set $3 + i32.const 0 + drop + local.get $1 + local.get $3 + f32.store + block $std/pointer/Pointer#get:value|inlined.0 (result f32) + global.get $std/pointer/buf + local.set $0 + i32.const 0 + drop + local.get $0 + f32.load + br $std/pointer/Pointer#get:value|inlined.0 + end + f32.const 1.399999976158142 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/pointer + ) +) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat deleted file mode 100644 index a90a5ad507..0000000000 --- a/tests/compiler/std/pointer.optimized.wat +++ /dev/null @@ -1,1279 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $std/pointer/one (mut i32) (i32.const 0)) - (global $std/pointer/two (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 $std/pointer/buf (mut i32) (i32.const 0)) - (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8 - local.set $5 - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $5 - select - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $5 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $5 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 3 - i32.sub - local.set $5 - loop $while-continue|3 - local.get $5 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $2 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $3 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $2 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $4 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $5 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|4 - local.get $5 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $2 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $3 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $2 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $4 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|5 - local.get $5 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $2 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $3 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $2 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $4 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $5 - i32.const 16 - i32.sub - local.set $5 - br $while-continue|5 - end - end - end - end - local.get $5 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $5 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $2 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $start:std/pointer - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - global.set $std/pointer/one - i32.const 24 - global.set $std/pointer/two - i32.const 8 - i32.const 1 - i32.store - i32.const 12 - i32.const 2 - i32.store - i32.const 8 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - global.get $std/pointer/two - i32.add - global.set $std/pointer/add - global.get $std/pointer/add - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - global.get $std/pointer/one - i32.sub - global.set $std/pointer/sub - global.get $std/pointer/sub - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 8 - i32.add - global.set $std/pointer/one - global.get $std/pointer/one - local.tee $0 - global.set $std/pointer/nextOne - global.get $std/pointer/nextOne - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.const 24 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $1 - global.get $std/pointer/two - local.tee $0 - if - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.sub - i32.const 8 - i32.sub - i32.const -16 - i32.le_u - if - local.get $1 - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.gt_u - if - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $1 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $1 - i32.add - local.get $0 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $1 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - else - local.get $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.add - local.tee $0 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $0 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $0 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - end - global.get $std/pointer/one - global.get $std/pointer/two - i32.eq - if - i32.const 0 - i32.const 1056 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/pointer/buf - i32.const 0 - f32.const 1.100000023841858 - f32.store - i32.const 4 - f32.const 1.2000000476837158 - f32.store - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=4 - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=4 - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - f32.load - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.tee $0 - i32.const 8 - i32.add - f32.const 1.2999999523162842 - f32.store - local.get $0 - f32.load offset=8 - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=8 - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - f32.load - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.tee $0 - f32.const 1.399999976158142 - f32.store - local.get $0 - f32.load - f32.const 1.399999976158142 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.399999976158142 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/pointer - ) -) diff --git a/tests/compiler/std/pointer.release.wat b/tests/compiler/std/pointer.release.wat new file mode 100644 index 0000000000..5f3f73f38b --- /dev/null +++ b/tests/compiler/std/pointer.release.wat @@ -0,0 +1,373 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/pointer/one (mut i32) (i32.const 0)) + (global $std/pointer/two (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)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $start:std/pointer + (local $0 i32) + (local $1 i32) + i32.const 8 + global.set $std/pointer/one + i32.const 24 + global.set $std/pointer/two + i32.const 8 + i32.const 1 + i32.store + i32.const 12 + i32.const 2 + i32.store + i32.const 8 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + global.get $std/pointer/two + i32.add + global.set $std/pointer/add + global.get $std/pointer/add + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + global.get $std/pointer/one + i32.sub + global.set $std/pointer/sub + global.get $std/pointer/sub + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 8 + i32.add + global.set $std/pointer/one + global.get $std/pointer/one + local.tee $0 + global.set $std/pointer/nextOne + global.get $std/pointer/nextOne + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $0 + global.get $std/pointer/two + local.tee $1 + if + local.get $0 + local.get $1 + i64.load align=1 + i64.store align=1 + else + local.get $0 + i64.const 0 + i64.store align=1 + end + global.get $std/pointer/one + global.get $std/pointer/two + i32.eq + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.const 1.100000023841858 + f32.store + i32.const 4 + f32.const 1.2000000476837158 + f32.store + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.const 1.2999999523162842 + f32.store + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.const 1.399999976158142 + f32.store + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/pointer + ) +) diff --git a/tests/compiler/std/pointer.ts b/tests/compiler/std/pointer.ts index 360e7fd9de..dc3c1a2435 100644 --- a/tests/compiler/std/pointer.ts +++ b/tests/compiler/std/pointer.ts @@ -21,7 +21,7 @@ @inline set value(value: T) { if (isReference()) { if (isManaged()) ERROR("Unsafe unmanaged set of a managed object"); - if (value === null) { + if (value == null) { memory.fill(changetype(this), 0, offsetof()); } else { memory.copy(changetype(this), changetype(value), offsetof()); @@ -91,7 +91,7 @@ assert(sub.offset == 16); assert(one.offset == 8); var nextOne = ++one; -assert(nextOne === one); +assert(nextOne == one); assert(one.offset == 16); assert(two.offset == 24); diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat deleted file mode 100644 index aa23eef8ba..0000000000 --- a/tests/compiler/std/pointer.untouched.wat +++ /dev/null @@ -1,2135 +0,0 @@ -(module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $std/pointer/one (mut i32) (i32.const 0)) - (global $std/pointer/two (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/ASC_SHRINK_LEVEL 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 16444)) - (global $~lib/memory/__heap_base i32 (i32.const 16444)) - (memory $0 1) - (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $std/pointer/Entry#set:key (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $std/pointer/Entry#set:val (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $start:std/pointer - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - i32.const 0 - local.set $1 - i32.const 8 - local.set $0 - local.get $0 - global.set $std/pointer/one - i32.const 0 - local.set $1 - i32.const 24 - local.set $0 - local.get $0 - global.set $std/pointer/two - global.get $std/pointer/one - local.set $0 - local.get $0 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $1 - local.get $1 - i32.const 24 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.0 (result i32) - global.get $std/pointer/one - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.0 - end - i32.const 1 - call $std/pointer/Entry#set:key - block $std/pointer/Pointer#get:value|inlined.1 (result i32) - global.get $std/pointer/one - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.1 - end - i32.const 2 - call $std/pointer/Entry#set:val - block $std/pointer/Pointer#get:value|inlined.2 (result i32) - global.get $std/pointer/one - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.2 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.3 (result i32) - global.get $std/pointer/one - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.3 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $1 - global.get $std/pointer/two - local.set $0 - local.get $1 - local.get $0 - i32.add - global.set $std/pointer/add - global.get $std/pointer/add - local.set $0 - local.get $0 - i32.const 32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $0 - global.get $std/pointer/one - local.set $1 - local.get $0 - local.get $1 - i32.sub - global.set $std/pointer/sub - global.get $std/pointer/sub - local.set $1 - local.get $1 - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $0 - local.get $0 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $1 - local.get $1 - i32.const 8 - i32.add - global.set $std/pointer/one - global.get $std/pointer/one - global.set $std/pointer/nextOne - global.get $std/pointer/nextOne - global.get $std/pointer/one - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $0 - local.get $0 - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $1 - local.get $1 - i32.const 24 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - local.set $1 - local.get $1 - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.4 (result i32) - global.get $std/pointer/two - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.4 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.5 (result i32) - global.get $std/pointer/two - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.5 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $2 - block $std/pointer/Pointer#get:value|inlined.6 (result i32) - global.get $std/pointer/two - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.6 - end - local.set $0 - i32.const 1 - drop - i32.const 0 - drop - local.get $0 - i32.const 0 - i32.eq - if - local.get $2 - i32.const 0 - i32.const 8 - call $~lib/memory/memory.fill - else - local.get $2 - local.get $0 - i32.const 8 - call $~lib/memory/memory.copy - end - global.get $std/pointer/one - local.set $1 - local.get $1 - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.7 (result i32) - global.get $std/pointer/one - local.set $2 - i32.const 1 - drop - local.get $2 - br $std/pointer/Pointer#get:value|inlined.7 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.8 (result i32) - global.get $std/pointer/one - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.8 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 0 - local.set $0 - local.get $0 - global.set $std/pointer/buf - global.get $std/pointer/buf - local.set $0 - i32.const 0 - local.set $1 - f32.const 1.100000023841858 - local.set $3 - local.get $0 - local.get $1 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $1 - i32.const 1 - local.set $2 - f32.const 1.2000000476837158 - local.set $3 - local.get $1 - local.get $2 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $2 - i32.const 0 - local.set $0 - local.get $2 - local.get $0 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $0 - i32.const 1 - local.set $1 - local.get $0 - local.get $1 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $1 - i32.const 0 - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $2 - i32.const 1 - local.set $0 - local.get $2 - local.get $0 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $0 - i32.const 2 - local.set $1 - f32.const 1.2999999523162842 - local.set $3 - local.get $0 - local.get $1 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $1 - i32.const 2 - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $2 - i32.const 2 - local.set $0 - local.get $2 - local.get $0 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $1 - f32.const 1.399999976158142 - local.set $3 - i32.const 0 - drop - local.get $1 - local.get $3 - f32.store - block $std/pointer/Pointer#get:value|inlined.0 (result f32) - global.get $std/pointer/buf - local.set $0 - i32.const 0 - drop - local.get $0 - f32.load - br $std/pointer/Pointer#get:value|inlined.0 - end - f32.const 1.399999976158142 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.399999976158142 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/pointer - ) -) diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.debug.wat similarity index 100% rename from tests/compiler/std/polyfills.untouched.wat rename to tests/compiler/std/polyfills.debug.wat diff --git a/tests/compiler/std/polyfills.optimized.wat b/tests/compiler/std/polyfills.release.wat similarity index 100% rename from tests/compiler/std/polyfills.optimized.wat rename to tests/compiler/std/polyfills.release.wat diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.debug.wat similarity index 92% rename from tests/compiler/std/set.untouched.wat rename to tests/compiler/std/set.debug.wat index c58528fe3e..e8f1838a4a 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.debug.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) @@ -40,9 +40,8 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/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 812)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) @@ -2085,237 +2084,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2365,7 +2133,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -2861,1259 +2629,6 @@ local.get $1 i32.store offset=12 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -4156,7 +2671,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.release.wat similarity index 90% rename from tests/compiler/std/set.optimized.wat rename to tests/compiler/std/set.release.wat index dde0f57db4..0bbd81280f 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.release.wat @@ -1279,7 +1279,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1294,7 +1294,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1307,7 +1307,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1315,7 +1315,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1326,16 +1326,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1346,16 +1346,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1363,7 +1363,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1371,8 +1371,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1389,7 +1389,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1399,13 +1399,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1418,40 +1418,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1511,182 +1511,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -2000,984 +1829,116 @@ i32.store end ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1073741820 local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1456 + i32.const 1616 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u select + local.get $2 + i32.shl + local.set $1 + local.get $3 if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 + local.get $5 i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 + i32.shl + local.tee $2 + i32.const 1073741820 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1073741820 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1456 - i32.const 1616 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $5 - local.get $0 - i32.load - local.tee $2 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1073741820 - local.get $1 - i32.const 1073741820 - i32.lt_u - select - local.tee $1 - local.get $5 - local.get $1 - local.get $5 - i32.gt_u - select - local.set $5 - end + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + local.get $1 + local.get $1 local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $4 i32.const 20 i32.sub - local.tee $1 + local.tee $3 i32.load i32.const -4 i32.and i32.const 16 i32.sub - local.get $5 - i32.ge_u - if - local.get $1 - local.get $5 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $5 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $6 - local.get $5 - local.get $1 - i32.load offset=16 - local.tee $1 local.get $1 - local.get $5 - i32.gt_u - select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $6 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $1 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $2 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.lt_u - if - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $2 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - local.get $1 - i32.add - local.get $2 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + i32.ge_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew end - local.get $6 + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy end - local.tee $1 + local.get $2 + local.get $4 i32.ne if local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 if local.get $0 - local.get $1 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $0 - local.get $5 + local.get $1 i32.store offset=8 end ) @@ -3240,7 +2201,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3250,62 +2210,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 if i32.const 0 i32.const 1568 @@ -3322,7 +2282,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3332,62 +2291,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -3429,7 +2388,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3439,62 +2397,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -3512,7 +2470,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3522,62 +2479,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -3607,7 +2564,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3616,7 +2573,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store local.get $2 @@ -3624,8 +2581,8 @@ local.set $5 local.get $2 i32.load offset=16 - local.set $1 - local.get $0 + local.set $6 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3634,28 +2591,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $0 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store offset=4 - local.get $6 + local.get $7 i32.const 0 i32.store offset=8 - local.get $6 + local.get $7 i32.const 0 i32.store offset=12 - local.get $1 + local.get $6 i32.const 1073741820 i32.gt_u if @@ -3667,63 +2624,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.const 8 - local.get $1 + local.get $6 i32.const 8 i32.gt_u select - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $6 - local.get $8 + local.get $7 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store offset=4 - local.get $6 local.get $7 + local.get $8 i32.store offset=8 + local.get $7 local.get $6 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $6 + local.get $4 + local.get $7 i32.store i32.const 0 local.set $0 loop $for-loop|0 - local.get $1 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s if local.get $3 i32.const 3 i32.shl local.get $5 i32.add - local.tee $7 + local.tee $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $7 + local.get $0 + local.get $4 i32.load8_s call $~lib/array/Array#__set local.get $0 @@ -3738,42 +2695,37 @@ br $for-loop|0 end end - local.get $6 + local.get $7 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $7 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $6 + local.get $1 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $3 i32.store offset=8 i32.const 0 local.set $0 loop $for-loop|4 - local.get $6 + local.get $7 i32.load offset=12 local.get $0 i32.gt_s if - local.get $6 + local.get $7 local.get $0 call $~lib/array/Array#__get - local.set $3 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $3 + local.tee $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3784,23 +2736,28 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.set $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -3822,7 +2779,7 @@ else local.get $1 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq @@ -3848,8 +2805,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $6 + local.get $3 + local.get $7 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -3860,7 +2817,7 @@ br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 local.get $2 i32.load offset=20 @@ -3886,7 +2843,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3896,62 +2852,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -3969,7 +2925,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3979,62 +2934,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -4075,7 +3030,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4085,62 +3039,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -4157,7 +3111,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4167,62 +3120,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -4240,7 +3193,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4250,62 +3202,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -4857,7 +3809,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -4868,62 +3819,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 if i32.const 0 i32.const 1568 @@ -4940,7 +3891,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -4951,62 +3901,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -5049,7 +3999,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5060,62 +4009,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -5133,7 +4082,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5144,62 +4092,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -5229,7 +4177,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5238,7 +4186,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store local.get $2 @@ -5246,8 +4194,8 @@ local.set $5 local.get $2 i32.load offset=16 - local.set $1 - local.get $0 + local.set $6 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5256,28 +4204,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $0 i32.const 16 i32.const 6 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store offset=4 - local.get $6 + local.get $7 i32.const 0 i32.store offset=8 - local.get $6 + local.get $7 i32.const 0 i32.store offset=12 - local.get $1 + local.get $6 i32.const 1073741820 i32.gt_u if @@ -5289,63 +4237,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.const 8 - local.get $1 + local.get $6 i32.const 8 i32.gt_u select - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $6 - local.get $8 + local.get $7 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store offset=4 - local.get $6 local.get $7 + local.get $8 i32.store offset=8 + local.get $7 local.get $6 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $6 + local.get $4 + local.get $7 i32.store i32.const 0 local.set $0 loop $for-loop|0 - local.get $1 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s if local.get $3 i32.const 3 i32.shl local.get $5 i32.add - local.tee $7 + local.tee $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $7 + local.get $0 + local.get $4 i32.load8_u call $~lib/array/Array#__set local.get $0 @@ -5360,42 +4308,37 @@ br $for-loop|0 end end - local.get $6 + local.get $7 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $7 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $6 + local.get $1 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $3 i32.store offset=8 i32.const 0 local.set $0 loop $for-loop|4 - local.get $6 + local.get $7 i32.load offset=12 local.get $0 i32.gt_s if - local.get $6 + local.get $7 local.get $0 call $~lib/array/Array#__get - local.set $3 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $3 + local.tee $4 i32.const 255 i32.and i32.const -1028477379 @@ -5407,23 +4350,28 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.set $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -5445,7 +4393,7 @@ else local.get $1 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq @@ -5471,8 +4419,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $6 + local.get $3 + local.get $7 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -5483,7 +4431,7 @@ br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 local.get $2 i32.load offset=20 @@ -5510,7 +4458,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5521,62 +4468,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -5594,7 +4541,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5605,62 +4551,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -5702,7 +4648,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5713,62 +4658,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -5785,7 +4730,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5796,62 +4740,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -5869,7 +4813,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5880,62 +4823,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $0 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -6526,7 +5469,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -6536,62 +5478,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 if i32.const 0 i32.const 1568 @@ -6608,7 +5550,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -6618,62 +5559,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -6715,7 +5656,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -6725,62 +5665,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -6798,7 +5738,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -6808,62 +5747,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -6893,7 +5832,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6902,7 +5841,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store local.get $2 @@ -6910,8 +5849,8 @@ local.set $5 local.get $2 i32.load offset=16 - local.set $1 - local.get $0 + local.set $6 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -6920,28 +5859,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $0 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store offset=4 - local.get $6 + local.get $7 i32.const 0 i32.store offset=8 - local.get $6 + local.get $7 i32.const 0 i32.store offset=12 - local.get $1 + local.get $6 i32.const 536870910 i32.gt_u if @@ -6953,65 +5892,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.const 8 - local.get $1 + local.get $6 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $6 - local.get $8 + local.get $7 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store offset=4 - local.get $6 local.get $7 + local.get $8 i32.store offset=8 + local.get $7 local.get $6 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $6 + local.get $4 + local.get $7 i32.store i32.const 0 local.set $0 loop $for-loop|0 - local.get $1 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s if local.get $3 i32.const 3 i32.shl local.get $5 i32.add - local.tee $7 + local.tee $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $7 + local.get $0 + local.get $4 i32.load16_s call $~lib/array/Array#__set local.get $0 @@ -7026,42 +5965,37 @@ br $for-loop|0 end end - local.get $6 + local.get $7 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $7 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $6 + local.get $1 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $3 i32.store offset=8 i32.const 0 local.set $0 loop $for-loop|4 - local.get $6 + local.get $7 i32.load offset=12 local.get $0 i32.gt_s - if - local.get $6 - local.get $0 - call $~lib/array/Array#__get - local.set $3 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $3 + if + local.get $7 + local.get $0 + call $~lib/array/Array#__get + local.tee $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7072,23 +6006,28 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.set $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -7110,7 +6049,7 @@ else local.get $1 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq @@ -7136,8 +6075,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $6 + local.get $3 + local.get $7 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -7148,7 +6087,7 @@ br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 local.get $2 i32.load offset=20 @@ -7174,7 +6113,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7184,62 +6122,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -7257,7 +6195,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7267,62 +6204,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -7363,7 +6300,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7373,62 +6309,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -7445,7 +6381,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7455,62 +6390,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -7528,7 +6463,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7538,62 +6472,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -8147,7 +7081,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8158,62 +7091,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 if i32.const 0 i32.const 1568 @@ -8230,7 +7163,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8241,62 +7173,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -8339,7 +7271,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8350,62 +7281,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -8423,7 +7354,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8434,62 +7364,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $1 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $4 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $4 + local.set $1 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -8519,7 +7449,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -8528,7 +7458,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store local.get $2 @@ -8536,8 +7466,8 @@ local.set $5 local.get $2 i32.load offset=16 - local.set $1 - local.get $0 + local.set $6 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8546,28 +7476,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $0 i32.const 16 i32.const 10 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store - local.get $6 + local.get $7 i32.const 0 i32.store offset=4 - local.get $6 + local.get $7 i32.const 0 i32.store offset=8 - local.get $6 + local.get $7 i32.const 0 i32.store offset=12 - local.get $1 + local.get $6 i32.const 536870910 i32.gt_u if @@ -8579,65 +7509,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.const 8 - local.get $1 + local.get $6 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $6 - local.get $8 + local.get $7 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $6 - local.get $8 + local.get $7 + local.get $0 i32.store offset=4 - local.get $6 local.get $7 + local.get $8 i32.store offset=8 + local.get $7 local.get $6 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $6 + local.get $4 + local.get $7 i32.store i32.const 0 local.set $0 loop $for-loop|0 - local.get $1 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s if local.get $3 i32.const 3 i32.shl local.get $5 i32.add - local.tee $7 + local.tee $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $7 + local.get $0 + local.get $4 i32.load16_u call $~lib/array/Array#__set local.get $0 @@ -8652,42 +7582,37 @@ br $for-loop|0 end end - local.get $6 + local.get $7 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $7 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $6 + local.get $1 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $3 i32.store offset=8 i32.const 0 local.set $0 loop $for-loop|4 - local.get $6 + local.get $7 i32.load offset=12 local.get $0 i32.gt_s if - local.get $6 + local.get $7 local.get $0 call $~lib/array/Array#__get - local.set $3 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $3 + local.tee $4 i32.const 65535 i32.and i32.const -1028477379 @@ -8699,23 +7624,28 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.set $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -8737,7 +7667,7 @@ else local.get $1 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq @@ -8763,8 +7693,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $6 + local.get $3 + local.get $7 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -8775,7 +7705,7 @@ br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 local.get $2 i32.load offset=20 @@ -8802,7 +7732,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8813,62 +7742,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -8886,7 +7815,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8897,62 +7825,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -8994,7 +7922,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9005,62 +7932,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -9077,7 +8004,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9088,62 +8014,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -9161,7 +8087,6 @@ local.get $2 i32.load offset=4 local.get $0 - local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9172,62 +8097,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $0 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -12577,7 +11502,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -12585,7 +11510,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $5 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -12593,13 +11518,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $8 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 @@ -12607,14 +11532,14 @@ local.get $8 i32.ne if - local.get $4 + local.get $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $8 i64.load local.tee $6 i64.store @@ -12663,7 +11588,7 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $7 i32.add local.tee $9 i32.load @@ -12676,20 +11601,20 @@ i32.add local.set $2 end - local.get $4 + local.get $8 i32.const 16 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $5 + local.get $7 i32.store - local.get $5 + local.get $7 if local.get $0 - local.get $5 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -12705,7 +11630,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -13105,8 +12030,8 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13125,23 +12050,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 - local.get $2 + local.get $1 i64.const 100 i64.lt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13151,11 +12076,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13166,14 +12091,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|0 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13186,14 +12111,14 @@ unreachable end i64.const 50 - local.set $2 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 i64.const 100 i64.lt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13204,11 +12129,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13219,14 +12144,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13239,7 +12164,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13248,16 +12173,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $9 i32.const 0 i32.store - local.get $1 + local.get $2 i32.load offset=8 - local.set $7 - local.get $1 + local.set $6 + local.get $2 i32.load offset=16 local.set $4 - local.get $5 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13266,25 +12191,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $7 i64.const 0 i64.store - local.get $8 + local.get $7 i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store offset=4 - local.get $9 + local.get $10 i32.const 0 i32.store offset=8 - local.get $9 + local.get $10 i32.const 0 i32.store offset=12 local.get $4 @@ -13307,35 +12232,35 @@ select i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.const 0 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $8 i32.store offset=4 - local.get $9 local.get $10 + local.get $8 i32.store - local.get $10 + local.get $8 if - local.get $9 local.get $10 + local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 local.get $10 - i32.store offset=4 - local.get $9 local.get $8 + i32.store offset=4 + local.get $10 + local.get $7 i32.store offset=8 - local.get $9 + local.get $10 local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 local.get $9 + local.get $10 i32.store loop $for-loop|02 local.get $3 @@ -13345,17 +12270,17 @@ local.get $3 i32.const 4 i32.shl - local.get $7 + local.get $6 i32.add - local.tee $5 + local.tee $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $9 + local.get $10 local.get $0 - local.get $5 + local.get $7 i64.load call $~lib/array/Array#__set local.get $0 @@ -13370,20 +12295,20 @@ br $for-loop|02 end end - local.get $9 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $9 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $9 + local.get $5 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor @@ -13392,13 +12317,13 @@ i32.const 0 local.set $0 loop $for-loop|2 - local.get $9 + local.get $10 i32.load offset=12 local.get $0 i32.gt_s if - local.get $1 - local.get $9 + local.get $2 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has @@ -13412,7 +12337,7 @@ unreachable end local.get $3 - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -13425,7 +12350,7 @@ end local.get $3 i32.load offset=20 - local.get $1 + local.get $2 i32.load offset=20 i32.ne if @@ -13437,14 +12362,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $1 loop $for-loop|3 - local.get $2 + local.get $1 i64.const 50 i64.lt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13455,11 +12380,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13469,14 +12394,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|3 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13489,14 +12414,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $1 loop $for-loop|4 - local.get $2 + local.get $1 i64.const 50 i64.lt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13506,11 +12431,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13521,11 +12446,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13535,14 +12460,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13554,9 +12479,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/set/Set#clear - local.get $1 + local.get $2 i32.load offset=20 if i32.const 0 @@ -13699,7 +12624,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13707,7 +12632,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $5 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13715,13 +12640,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $8 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 @@ -13729,14 +12654,14 @@ local.get $8 i32.ne if - local.get $4 + local.get $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $8 i64.load local.tee $6 i64.store @@ -13785,7 +12710,7 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $7 i32.add local.tee $9 i32.load @@ -13798,20 +12723,20 @@ i32.add local.set $2 end - local.get $4 + local.get $8 i32.const 16 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $5 + local.get $7 i32.store - local.get $5 + local.get $7 if local.get $0 - local.get $5 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -13827,7 +12752,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -14151,8 +13076,8 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14171,23 +13096,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 - local.get $2 + local.get $1 i64.const 100 i64.lt_u if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14197,11 +13122,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14212,14 +13137,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|0 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14232,14 +13157,14 @@ unreachable end i64.const 50 - local.set $2 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 i64.const 100 i64.lt_u if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14250,11 +13175,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14265,14 +13190,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14285,7 +13210,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14294,16 +13219,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $9 i32.const 0 i32.store - local.get $1 + local.get $2 i32.load offset=8 - local.set $7 - local.get $1 + local.set $6 + local.get $2 i32.load offset=16 local.set $4 - local.get $5 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14312,25 +13237,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $7 i64.const 0 i64.store - local.get $8 + local.get $7 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store offset=4 - local.get $9 + local.get $10 i32.const 0 i32.store offset=8 - local.get $9 + local.get $10 i32.const 0 i32.store offset=12 local.get $4 @@ -14353,35 +13278,35 @@ select i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.const 0 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $8 i32.store offset=4 - local.get $9 local.get $10 + local.get $8 i32.store - local.get $10 + local.get $8 if - local.get $9 local.get $10 + local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 local.get $10 - i32.store offset=4 - local.get $9 local.get $8 + i32.store offset=4 + local.get $10 + local.get $7 i32.store offset=8 - local.get $9 + local.get $10 local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 local.get $9 + local.get $10 i32.store loop $for-loop|02 local.get $3 @@ -14391,17 +13316,17 @@ local.get $3 i32.const 4 i32.shl - local.get $7 + local.get $6 i32.add - local.tee $5 + local.tee $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $9 + local.get $10 local.get $0 - local.get $5 + local.get $7 i64.load call $~lib/array/Array#__set local.get $0 @@ -14416,20 +13341,20 @@ br $for-loop|02 end end - local.get $9 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $9 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $9 + local.get $5 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor @@ -14438,13 +13363,13 @@ i32.const 0 local.set $0 loop $for-loop|2 - local.get $9 + local.get $10 i32.load offset=12 local.get $0 i32.gt_s if - local.get $1 - local.get $9 + local.get $2 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has @@ -14458,7 +13383,7 @@ unreachable end local.get $3 - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -14471,7 +13396,7 @@ end local.get $3 i32.load offset=20 - local.get $1 + local.get $2 i32.load offset=20 i32.ne if @@ -14483,14 +13408,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $1 loop $for-loop|3 - local.get $2 + local.get $1 i64.const 50 i64.lt_u if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14501,11 +13426,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14515,14 +13440,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|3 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14535,14 +13460,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $1 loop $for-loop|4 - local.get $2 + local.get $1 i64.const 50 i64.lt_u if - local.get $1 local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14552,11 +13477,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#add local.get $1 + call $~lib/set/Set#add local.get $2 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14567,11 +13492,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete local.get $2 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14581,14 +13506,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.const 1 i64.add - local.set $2 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14600,9 +13525,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/set/Set#clear - local.get $1 + local.get $2 i32.load offset=20 if i32.const 0 @@ -14628,11 +13553,11 @@ (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -14661,7 +13586,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -14677,33 +13602,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $8 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $5 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $4 + local.get $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $8 f32.load - local.tee $8 + local.tee $4 f32.store local.get $2 - local.get $8 + local.get $4 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -14736,7 +13661,7 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $7 i32.add local.tee $9 i32.load @@ -14749,20 +13674,20 @@ i32.add local.set $2 end - local.get $4 + local.get $8 i32.const 8 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $5 + local.get $7 i32.store - local.get $5 + local.get $7 if local.get $0 - local.get $5 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -15489,7 +14414,7 @@ i32.store local.get $11 i32.load offset=8 - local.set $5 + local.set $4 local.get $11 i32.load offset=16 local.set $7 @@ -15509,18 +14434,18 @@ i32.const 16 i32.const 20 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.store - local.get $4 + local.get $6 i32.const 0 i32.store offset=4 - local.get $4 + local.get $6 i32.const 0 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 i32.store offset=12 local.get $7 @@ -15546,24 +14471,24 @@ local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $4 local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 if - local.get $4 local.get $6 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 local.get $6 + local.get $5 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 i32.store offset=8 - local.get $4 + local.get $6 local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -15571,7 +14496,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $3 - local.get $4 + local.get $6 i32.store loop $for-loop|02 local.get $7 @@ -15581,7 +14506,7 @@ local.get $9 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add local.tee $0 i32.load offset=4 @@ -15597,7 +14522,7 @@ i32.const 1 i32.add local.set $1 - local.get $4 + local.get $6 i32.load offset=12 local.get $0 i32.le_u @@ -15613,7 +14538,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 local.get $0 i32.const 1 i32.add @@ -15621,11 +14546,11 @@ i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $4 + local.get $6 local.get $3 i32.store offset=12 end - local.get $4 + local.get $6 i32.load offset=4 local.get $0 i32.const 2 @@ -15641,12 +14566,12 @@ br $for-loop|02 end end - local.get $4 + local.get $6 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $4 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -15654,19 +14579,19 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $8 - local.get $4 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $3 i32.store offset=8 loop $for-loop|2 - local.get $4 + local.get $6 i32.load offset=12 local.get $10 i32.gt_s if - local.get $4 + local.get $6 local.get $10 call $~lib/array/Array#__get local.tee $2 @@ -15748,7 +14673,7 @@ unreachable end local.get $3 - local.get $4 + local.get $6 local.get $10 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -16330,12 +15255,12 @@ (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 i64) + (local $8 i32) + (local $9 i32) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16364,7 +15289,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -16372,7 +15297,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -16380,35 +15305,35 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $9 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $7 + local.set $6 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $7 + local.get $6 + local.get $9 i32.ne if - local.get $4 + local.get $9 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $9 f64.load - local.tee $8 + local.tee $5 f64.store local.get $2 - local.get $8 + local.get $5 i64.reinterpret_f64 - local.tee $9 + local.tee $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16418,7 +15343,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $9 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16452,7 +15377,7 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $8 i32.add local.tee $10 i32.load @@ -16465,20 +15390,20 @@ i32.add local.set $2 end - local.get $4 + local.get $9 i32.const 16 i32.add - local.set $4 + local.set $9 br $while-continue|0 end end local.get $0 - local.get $5 + local.get $8 i32.store - local.get $5 + local.get $8 if local.get $0 - local.get $5 + local.get $8 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -16494,7 +15419,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -16825,8 +15750,8 @@ (func $std/set/testNumeric (local $0 i32) (local $1 i32) - (local $2 f64) - (local $3 i32) + (local $2 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -16845,23 +15770,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 call $~lib/set/Set#constructor - local.tee $8 + local.tee $10 i32.store loop $for-loop|0 - local.get $2 + local.get $3 f64.const 100 f64.lt if - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -16871,11 +15796,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#add - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -16886,14 +15811,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 f64.const 1 f64.add - local.set $2 + local.set $3 br $for-loop|0 end end - local.get $8 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -16906,14 +15831,14 @@ unreachable end f64.const 50 - local.set $2 + local.set $3 loop $for-loop|1 - local.get $2 + local.get $3 f64.const 100 f64.lt if - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -16924,11 +15849,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#add - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -16939,14 +15864,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 f64.const 1 f64.add - local.set $2 + local.set $3 br $for-loop|1 end end - local.get $8 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -16959,7 +15884,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16968,16 +15893,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $8 + local.get $10 i32.load offset=8 - local.set $3 - local.get $8 - i32.load offset=16 local.set $6 - local.get $1 + local.get $10 + i32.load offset=16 + local.set $8 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -16986,28 +15911,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $0 i64.const 0 i64.store - local.get $9 + local.get $0 i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $4 i32.store - local.get $9 + local.get $4 i32.const 0 i32.store - local.get $9 + local.get $4 i32.const 0 i32.store offset=4 - local.get $9 + local.get $4 i32.const 0 i32.store offset=8 - local.get $9 + local.get $4 i32.const 0 i32.store offset=12 - local.get $6 + local.get $8 i32.const 134217727 i32.gt_u if @@ -17019,74 +15944,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.const 8 - local.get $6 + local.get $8 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $10 + local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $5 i32.store offset=4 - local.get $9 - local.get $11 + local.get $4 + local.get $5 i32.store - local.get $11 + local.get $5 if - local.get $9 - local.get $11 + local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 - local.get $11 + local.get $4 + local.get $5 i32.store offset=4 - local.get $9 - local.get $10 + local.get $4 + local.get $0 i32.store offset=8 - local.get $9 - local.get $6 + local.get $4 + local.get $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $9 + local.get $2 + local.get $4 i32.store loop $for-loop|02 - local.get $5 - local.get $6 - i32.lt_s + local.get $8 + local.get $9 + i32.gt_s if - local.get $5 + local.get $9 i32.const 4 i32.shl - local.get $3 + local.get $6 i32.add - local.tee $1 + local.tee $0 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $1 - f64.load - local.set $2 local.get $0 - local.tee $1 + f64.load + local.set $3 + local.get $1 + local.tee $0 i32.const 1 i32.add - local.set $0 - local.get $9 + local.set $1 + local.get $4 i32.load offset=12 - local.get $1 + local.get $0 i32.le_u if - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -17097,62 +16022,62 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $1 + local.get $4 + local.get $0 i32.const 1 i32.add - local.tee $10 + local.tee $2 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $9 - local.get $10 + local.get $4 + local.get $2 i32.store offset=12 end - local.get $9 + local.get $4 i32.load offset=4 - local.get $1 + local.get $0 i32.const 3 i32.shl i32.add - local.get $2 + local.get $3 f64.store end - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|02 end end - local.get $9 - local.get $0 + local.get $4 + local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $9 - local.get $0 + local.get $4 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 local.get $4 - local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $9 + local.get $4 i32.load offset=12 - local.get $7 + local.get $11 i32.gt_s if - local.get $8 - local.get $9 - local.get $7 + local.get $10 + local.get $4 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17165,20 +16090,20 @@ unreachable end local.get $0 - local.get $9 - local.get $7 + local.get $4 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $11 i32.const 1 i32.add - local.set $7 + local.set $11 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $8 + local.get $10 i32.load offset=20 i32.ne if @@ -17190,14 +16115,14 @@ unreachable end f64.const 0 - local.set $2 + local.set $3 loop $for-loop|3 - local.get $2 + local.get $3 f64.const 50 f64.lt if - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17208,11 +16133,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#delete - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17222,14 +16147,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 f64.const 1 f64.add - local.set $2 + local.set $3 br $for-loop|3 end end - local.get $8 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -17242,14 +16167,14 @@ unreachable end f64.const 0 - local.set $2 + local.set $3 loop $for-loop|4 - local.get $2 + local.get $3 f64.const 50 f64.lt if - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17259,11 +16184,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#add - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17274,11 +16199,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#delete - local.get $8 - local.get $2 + local.get $10 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17288,14 +16213,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 f64.const 1 f64.add - local.set $2 + local.set $3 br $for-loop|4 end end - local.get $8 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -17307,9 +16232,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $10 call $~lib/set/Set#clear - local.get $8 + local.get $10 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/simd.ts b/tests/compiler/std/simd.ts deleted file mode 100644 index a7e8e5eabf..0000000000 --- a/tests/compiler/std/simd.ts +++ /dev/null @@ -1,31 +0,0 @@ -// hint: asc tests/compiler/std/simd --enable simd - -@final -class I8x16 { - - @inline static from(vec: v128): I8x16 { - return changetype(vec); - } - - // TODO: not possible due to arguments becoming locals, no longer being compile-time constants - // @inline constructor( - // a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8 - // ) { - // return changetype(i8x16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)); - // } - private constructor() { unreachable(); } - - @inline @operator("+") - add(vec: I8x16): I8x16 { - return changetype(v128.add(changetype(this), changetype(vec))); - } -} - -function test_I8x16(): void { - var a = I8x16.from(i8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)); - var c = a + a; -} - -if (ASC_FEATURE_SIMD) { - test_I8x16(); -} diff --git a/tests/compiler/std/static-array.debug.wat b/tests/compiler/std/static-array.debug.wat new file mode 100644 index 0000000000..c501b73f02 --- /dev/null +++ b/tests/compiler/std/static-array.debug.wat @@ -0,0 +1,3205 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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)) + (global $std/static-array/F i32 (i32.const 336)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (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_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 928)) + (global $~lib/memory/__data_end i32 (i32.const 988)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17372)) + (global $~lib/memory/__heap_base i32 (i32.const 17372)) + (memory $0 1) + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\03\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") + (data (i32.const 92) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\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 (i32.const 140) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\00\00\00p\00\00\00\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @\00\00\00\00") + (data (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\05\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 (i32.const 268) ",\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\f4?\00\00\00\00\00\00\02@\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\06\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 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 752) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 780) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 832) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 928) "\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\02\t\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 448 + i32.const 800 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 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 (result i32) + i32.const 0 + i32.const 672 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + 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 $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + 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 $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 + drop + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + 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 $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 880 + 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 $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + 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 $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + 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 $0 + memory.size + local.set $1 + local.get $0 + 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 $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (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 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + 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 $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + 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 + 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 $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + 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 $0 + local.get $0 + 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 $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + 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 $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + 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 672 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + 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 + ) + (func $~lib/rt/itcms/interrupt + (local $0 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 $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.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 $0 + 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 $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + 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/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 608 + i32.const 880 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (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 608 + i32.const 672 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $3 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + 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 $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 560 + i32.const 512 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + 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 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + 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 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + 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 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (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 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $invalid + 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17392 + i32.const 17440 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:std/static-array + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/static-array/i + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/i + 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.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/i + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + 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 $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + i32.const 2 + call $~lib/array/Array#__set + global.get $std/static-array/i + 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.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + 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 + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + i64.const 4 + call $~lib/array/Array#__set + global.get $std/static-array/I + 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 + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + 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 + f32.const 1.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + f32.const 2.5 + call $~lib/array/Array#__set + global.get $std/static-array/f + 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 + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + 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 + f64.const 1.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + f64.const 2.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + f64.const 2.25 + call $~lib/array/Array#__set + global.get $std/static-array/F + 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 + f64.const 2.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 28 + 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 + ) +) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.release.wat similarity index 62% rename from tests/compiler/std/static-array.optimized.wat rename to tests/compiler/std/static-array.release.wat index 929f1279c5..d39c917b03 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.release.wat @@ -2,11 +2,11 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (type $i32_=>_f32 (func (param i32) (result f32))) (type $i32_=>_f64 (func (param i32) (result f64))) @@ -1249,1439 +1249,398 @@ end end ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - loop $while-continue|0 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $1 + i32.shr_u + i32.eqz + if + i32.const 1073741820 local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select + i32.shr_u + i32.eqz if - local.get $0 - local.tee $3 + i32.const 1584 + i32.const 1536 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $2 i32.const 1 - i32.add - local.set $0 + i32.shl + local.tee $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + i32.const 8 + local.get $1 + i32.shl + local.tee $1 local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 local.get $2 - i32.const 1 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 + local.tee $6 + i32.load + i32.const -4 + i32.and i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $6 + i32.load offset=12 + local.set $7 + local.get $3 + i32.const 1073741804 i32.ge_u if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 + i32.const 1632 + i32.const 1696 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-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 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + local.get $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $3 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $4 + i32.load offset=1568 local.get $1 i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $8 i32.add - local.set $1 - local.get $0 - i32.const 16 + local.get $8 + local.get $8 + i32.const 536870910 + i32.lt_u + select i32.add - local.set $0 - local.get $2 + i32.const 65535 + i32.add + i32.const -65536 + i32.and i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 + 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 $4 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 local.get $1 i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 + i32.const -4 + i32.and + local.get $8 + i32.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 + local.set $5 + local.get $8 i32.const 4 i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 20 - i32.sub - local.tee $5 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $5 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $5 - i32.load offset=12 - local.set $4 - local.get $1 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $6 - local.get $1 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1632 - i32.const 1904 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 12 - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $2 - i32.const 12 - i32.le_u - select - local.tee $7 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - i32.const 4 - local.get $6 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 1 - i32.const 27 - local.get $7 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $7 - i32.add - local.get $7 - local.get $7 - i32.const 536870910 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - 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 $6 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $6 - local.get $7 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 496 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1904 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $8 + i32.sub + local.tee $9 i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $7 - i32.lt_u - if - i32.const 0 - i32.const 1904 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $3 - local.get $7 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1904 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $7 - i32.sub - local.tee $8 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $3 - i32.const 2 - i32.and - local.get $7 - i32.or - i32.store - local.get $7 - local.get $2 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $8 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $6 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $4 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $4 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - local.get $2 - local.get $4 - i32.store offset=8 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $4 - local.set $2 - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - local.get $2 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $2 - i32.const 0 - i32.store - local.get $2 - local.get $1 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $3 - i32.add - local.tee $6 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $6 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 0 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $6 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $6 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $6 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $2 - local.get $2 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $6 - i32.add - local.set $2 - local.get $3 - local.get $6 - i32.sub - local.set $3 - loop $while-continue|0 - local.get $3 - i32.const 32 i32.ge_u if - local.get $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i64.const 0 - i64.store offset=16 - local.get $2 - i64.const 0 - i64.store offset=24 - local.get $3 - i32.const 32 + local.get $1 + local.get $5 + i32.const 2 + i32.and + local.get $8 + i32.or + i32.store + local.get $8 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $5 + local.get $9 + i32.const 4 i32.sub - local.set $3 - local.get $2 - i32.const 32 + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + 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.set $2 - br $while-continue|0 + local.tee $4 + local.get $4 + i32.load + i32.const -3 + i32.and + i32.store end - end - end - local.get $1 - local.get $5 - i32.load offset=16 - local.tee $2 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $5 - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if local.get $1 - local.get $0 + local.get $7 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $4 + i32.load offset=8 + local.set $5 + local.get $1 + global.get $~lib/rt/itcms/white + local.get $4 + i32.or + i32.store offset=4 + local.get $1 local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.gt_u - if - local.get $0 - i32.const 7 + i32.store offset=8 + local.get $5 + local.get $5 + i32.load offset=4 + i32.const 3 i32.and local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|00 - local.get $1 - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|00 - end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $5 - if - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and + i32.or + i32.store offset=4 + local.get $4 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 - i32.const 7 + i32.load + i32.const -4 i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - i32.add - local.get $0 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $5 - if - local.get $1 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $4 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $1 - i32.shr_u - i32.eqz - if - i32.const 1073741820 - local.get $1 - i32.shr_u - i32.eqz - if - i32.const 1584 - i32.const 1536 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $3 + memory.fill + local.get $1 + local.get $2 + local.get $3 + local.get $6 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy end - local.get $0 - i32.load - local.tee $3 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_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 $1 - call $~lib/rt/itcms/__renew - local.tee $2 - local.get $3 i32.ne if local.get $0 - local.get $2 + local.get $1 i32.store local.get $0 - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 if local.get $0 i32.eqz @@ -2694,10 +1653,10 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $2 + local.get $1 i32.const 20 i32.sub - local.tee $2 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -2709,23 +1668,23 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $3 + local.tee $2 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 i32.eq - local.get $3 + local.get $2 i32.const 3 i32.eq i32.and if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray end end @@ -2733,7 +1692,7 @@ end end local.get $0 - local.get $1 + local.get $3 i32.store offset=8 end ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat deleted file mode 100644 index d10cb3566b..0000000000 --- a/tests/compiler/std/static-array.untouched.wat +++ /dev/null @@ -1,4690 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (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)) - (global $std/static-array/F i32 (i32.const 336)) - (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) - (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) - (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) - (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 928)) - (global $~lib/memory/__data_end i32 (i32.const 988)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17372)) - (global $~lib/memory/__heap_base i32 (i32.const 17372)) - (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\03\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") - (data (i32.const 92) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\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 (i32.const 140) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\00\00\00p\00\00\00\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @\00\00\00\00") - (data (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\05\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 (i32.const 268) ",\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\f4?\00\00\00\00\00\00\02@\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\06\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 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 752) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 780) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 832) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 928) "\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\02\t\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00") - (table $0 1 funcref) - (elem $0 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 448 - i32.const 512 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - local.get $0 - ) - (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - ) - (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - ) - (func $~lib/rt/itcms/visitRoots (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:next - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.ne - local.set $3 - local.get $3 - if - i32.const 1 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 159 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 20 - i32.add - local.get $0 - call $~lib/rt/__visit_members - local.get $2 - call $~lib/rt/itcms/Object#get:next - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $0 - i32.load offset=8 - i32.const 0 - i32.eq - if (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 1 - drop - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/rt/itcms/Object#set:prev - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 448 - i32.const 800 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - local.get $3 - call $~lib/rt/itcms/Object#set:prev - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 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 (result i32) - i32.const 0 - i32.const 672 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - 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 $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $2 - i32.const 0 - drop - local.get $2 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $2 - 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 $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - local.set $1 - loop $while-continue|0 - local.get $1 - global.get $~lib/memory/__heap_base - i32.lt_u - local.set $2 - local.get $2 - if - local.get $1 - i32.load - local.get $0 - call $~lib/rt/itcms/__visit - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) - i32.const 4 - local.get $0 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - local.get $3 - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $6 - i32.const 31 - local.get $6 - i32.clz - i32.sub - local.set $4 - local.get $6 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $8 - local.get $1 - i32.load offset=8 - local.set $9 - local.get $8 - if - local.get $8 - local.get $9 - call $~lib/rt/tlsf/Block#set:next - end - local.get $9 - if - local.get $9 - local.get $8 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $6 - local.get $5 - local.set $7 - local.get $10 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $6 - local.get $9 - local.set $7 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - local.get $9 - i32.eqz - if - local.get $0 - local.set $6 - local.get $4 - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - local.get $0 - local.set $7 - local.get $4 - local.set $11 - local.get $6 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $6 - local.set $10 - local.get $7 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - 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 $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - local.set $3 - local.get $3 - i32.load - local.set $6 - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.set $1 - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $2 - call $~lib/rt/common/BLOCK#set:mmInfo - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $7 - i32.const 1 - drop - local.get $7 - i32.const 12 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 880 - 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 $7 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $8 - local.get $7 - i32.const 4 - i32.shr_u - local.set $9 - else - local.get $7 - local.tee $3 - i32.const 1073741820 - local.tee $6 - local.get $3 - local.get $6 - i32.lt_u - select - local.set $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $8 - local.get $3 - local.get $8 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $9 - local.get $8 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $8 - end - i32.const 1 - drop - local.get $8 - i32.const 23 - i32.lt_u - if (result i32) - local.get $9 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $10 - local.get $8 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $1 - local.get $11 - call $~lib/rt/tlsf/Block#set:next - local.get $11 - if - local.get $11 - local.get $1 - call $~lib/rt/tlsf/Block#set:prev - end - local.get $0 - local.set $12 - local.get $8 - local.set $10 - local.get $9 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $10 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $8 - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $0 - local.set $13 - local.get $8 - local.set $12 - local.get $0 - local.set $3 - local.get $8 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $9 - i32.shl - i32.or - local.set $10 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 $1 - local.get $2 - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 4 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 397 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $8 - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $1 - i32.const 4 - i32.add - local.get $7 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initialize - (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) - 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 $0 - memory.size - local.set $1 - local.get $0 - 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 $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $3 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - i32.const 1572 - i32.add - local.set $12 - i32.const 0 - drop - local.get $3 - local.get $12 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (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 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - 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 $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $0 - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $0 - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - 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 - 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 $1 - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - 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 $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - 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 $0 - local.get $0 - 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 $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#get:color - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - call $~lib/rt/itcms/Object#set:color - local.get $0 - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $0 - call $~lib/rt/itcms/Object#get:next - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $2 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $2 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $2 - 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 $0 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $0 - 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 672 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - 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 - ) - (func $~lib/rt/itcms/interrupt - (local $0 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 $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.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 $0 - 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 $0 i32) (result i32) - local.get $0 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - 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/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 608 - i32.const 880 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/computeSize - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 330 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 4 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 880 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 608 - i32.const 672 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtSize - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $3 - local.get $3 - local.get $0 - local.get $1 - local.tee $4 - local.get $2 - i32.load offset=16 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_u - select - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.eqz - if - return - end - i32.const 1 - drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 20 - i32.sub - local.set $3 - local.get $3 - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.set $4 - local.get $4 - call $~lib/rt/itcms/Object#get:color - local.set $5 - local.get $5 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $4 - call $~lib/rt/itcms/Object#makeGray - else - local.get $3 - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $5 - 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 $3 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $4 - local.get $1 - local.get $4 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 560 - i32.const 512 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $5 - local.get $1 - local.tee $6 - i32.const 8 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $2 - i32.shl - local.set $6 - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1073741820 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_u - select - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.gt_u - select - local.set $6 - end - local.get $5 - local.get $6 - call $~lib/rt/itcms/__renew - local.set $8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $8 - local.get $5 - i32.ne - if - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - i32.store offset=4 - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $6 - i32.store offset=8 - end - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 448 - i32.const 512 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 448 - i32.const 512 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - 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 448 - i32.const 512 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 448 - i32.const 512 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - 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 448 - i32.const 512 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 448 - i32.const 512 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - 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 448 - i32.const 512 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (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 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $invalid - 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 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 17392 - i32.const 17440 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:std/static-array - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $std/static-array/i - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/i - 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.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/i - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - 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 $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 0 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/static-array/i - 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.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - 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 - i64.const 3 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 0 - i64.const 4 - call $~lib/array/Array#__set - global.get $std/static-array/I - 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 - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - 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 - f32.const 1.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 0 - f32.const 2.5 - call $~lib/array/Array#__set - global.get $std/static-array/f - 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 - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - 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 - f64.const 1.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - call $~lib/array/Array#__get - f64.const 2.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 0 - f64.const 2.25 - call $~lib/array/Array#__set - global.get $std/static-array/F - 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 - f64.const 2.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 28 - 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 - ) -) diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.debug.wat similarity index 86% rename from tests/compiler/std/staticarray.untouched.wat rename to tests/compiler/std/staticarray.debug.wat index 62b5515c7a..dedc01ca36 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -30,12 +30,12 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) @@ -2198,1541 +2198,57 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 320 - i32.const 384 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 320 + i32.const 384 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + call $~lib/rt/itcms/interrupt end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -3745,7 +2261,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) @@ -4686,7 +3202,7 @@ local.get $11 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 ) (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4791,7 +3307,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) @@ -6758,17 +5274,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.const 32 + memory.fill global.get $std/staticarray/arr1 local.set $5 global.get $~lib/memory/__stack_pointer @@ -8864,7 +7372,7 @@ local.get $0 i32.load offset=4 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $3 local.set $4 global.get $~lib/memory/__stack_pointer @@ -8892,13 +7400,8 @@ local.get $0 call $~lib/staticarray/StaticArray#get:length local.set $2 - i32.const 0 local.get $1 call $~lib/staticarray/StaticArray#get:length - local.get $1 - i32.const 0 - i32.eq - select local.set $3 local.get $2 local.get $3 @@ -8936,7 +7439,7 @@ local.get $6 local.get $0 local.get $7 - call $~lib/memory/memory.copy + memory.copy local.get $6 local.get $7 i32.add @@ -8944,7 +7447,7 @@ local.get $3 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $8 global.get $~lib/memory/__stack_pointer @@ -9170,13 +7673,8 @@ local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#get:length local.set $2 - i32.const 0 local.get $1 call $~lib/array/Array<~lib/string/String>#get:length - local.get $1 - i32.const 0 - i32.eq - select local.set $3 local.get $2 local.get $3 @@ -9442,7 +7940,7 @@ local.get $11 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $11 i32.add @@ -9459,7 +7957,7 @@ local.get $9 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $9 i32.add @@ -9495,7 +7993,7 @@ call $~lib/string/String#get:length i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end local.get $10 local.set $12 diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.release.wat similarity index 80% rename from tests/compiler/std/staticarray.optimized.wat rename to tests/compiler/std/staticarray.release.wat index d9f1093a07..2deea0ab6f 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -28,135 +28,71 @@ (global $std/staticarray/maxVal (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20252)) (memory $0 1) - (data (i32.const 1036) "\1c") - (data (i32.const 1048) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1068) "<") - (data (i32.const 1080) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1132) "<") - (data (i32.const 1144) "\01\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 (i32.const 1196) "<") - (data (i32.const 1208) "\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1260) "\1c") - (data (i32.const 1272) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1292) "\1c") - (data (i32.const 1304) "\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") - (data (i32.const 1324) "<") - (data (i32.const 1336) "\01\00\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 (i32.const 1388) "<") - (data (i32.const 1400) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1516) ",") - (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1596) "<") - (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) ",") - (data (i32.const 1672) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1708) ",") - (data (i32.const 1724) "\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 (i32.const 1756) ",") - (data (i32.const 1768) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1068) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1132) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1196) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 1292) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") + (data (i32.const 1324) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1388) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 1756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 1804) "\1c") - (data (i32.const 1836) "\1c") - (data (i32.const 1848) "\03\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 1868) "\1c") - (data (i32.const 1880) "\03\00\00\00\04\00\00\00\01") - (data (i32.const 1900) "\1c") - (data (i32.const 1912) "\03") - (data (i32.const 1932) "\1c") - (data (i32.const 1944) "\01\00\00\00\06\00\00\00a\00n\00t") - (data (i32.const 1964) "\1c") - (data (i32.const 1976) "\01\00\00\00\n\00\00\00b\00i\00s\00o\00n") - (data (i32.const 1996) "\1c") - (data (i32.const 2008) "\01\00\00\00\n\00\00\00c\00a\00m\00e\00l") - (data (i32.const 2028) "\1c") - (data (i32.const 2040) "\01\00\00\00\08\00\00\00d\00u\00c\00k") - (data (i32.const 2060) ",") - (data (i32.const 2072) "\01\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") - (data (i32.const 2108) ",") - (data (i32.const 2120) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") - (data (i32.const 2156) "|") - (data (i32.const 2168) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 2284) ",") - (data (i32.const 2296) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 1868) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00\01") + (data (i32.const 1900) "\1c\00\00\00\00\00\00\00\00\00\00\00\03") + (data (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00n\00t") + (data (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00b\00i\00s\00o\00n") + (data (i32.const 1996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00c\00a\00m\00e\00l") + (data (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00d\00u\00c\00k") + (data (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") + (data (i32.const 2108) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 2156) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") (data (i32.const 2332) "\1c") - (data (i32.const 2364) "\1c") - (data (i32.const 2376) "\01\00\00\00\06\00\00\00f\00o\00o") - (data (i32.const 2396) "\1c") - (data (i32.const 2412) "\04\00\00\00P\t") - (data (i32.const 2428) ",") - (data (i32.const 2440) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") - (data (i32.const 2476) "\1c") - (data (i32.const 2488) "\n\00\00\00\08") - (data (i32.const 2502) "\f8\7f") - (data (i32.const 2508) "\1c") - (data (i32.const 2520) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 2540) "\1c") - (data (i32.const 2552) "\03\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") - (data (i32.const 2572) ",") - (data (i32.const 2584) "\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") - (data (i32.const 2620) "\1c") - (data (i32.const 2632) "\01\00\00\00\08\00\00\00F\00i\00r\00e") - (data (i32.const 2652) "\1c") - (data (i32.const 2664) "\01\00\00\00\06\00\00\00A\00i\00r") - (data (i32.const 2684) "\1c") - (data (i32.const 2696) "\01\00\00\00\n\00\00\00W\00a\00t\00e\00r") - (data (i32.const 2716) "\1c") - (data (i32.const 2728) "\08\00\00\00\0c\00\00\00P\n\00\00p\n\00\00\90\n") - (data (i32.const 2748) "\1c") - (data (i32.const 2760) "\01") - (data (i32.const 2780) "\1c") - (data (i32.const 2792) "\01\00\00\00\02\00\00\00,") - (data (i32.const 2812) ",") - (data (i32.const 2824) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") - (data (i32.const 2860) ",") - (data (i32.const 2872) "\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") - (data (i32.const 2908) "\1c") - (data (i32.const 2920) "\01\00\00\00\02\00\00\00-") - (data (i32.const 2940) ",") - (data (i32.const 2952) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") - (data (i32.const 2988) "\1c") - (data (i32.const 3000) "\01\00\00\00\06\00\00\00 \00+\00 ") - (data (i32.const 3020) "<") - (data (i32.const 3032) "\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") - (data (i32.const 3084) "\1c") - (data (i32.const 3096) "\03\00\00\00\08") - (data (i32.const 3116) "\1c") - (data (i32.const 3128) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 3148) ",") - (data (i32.const 3160) "\03\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 (i32.const 3196) "\1c") - (data (i32.const 3208) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 3228) "\1c") - (data (i32.const 3240) "\0c\00\00\00\08\00\00\00\01") - (data (i32.const 3260) "\1c") - (data (i32.const 3272) "\0d\00\00\00\08\00\00\00\02") - (data (i32.const 3292) "\1c") - (data (i32.const 3304) "\0e\00\00\00\08\00\00\00\03") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\0f\00\00\00\08\00\00\00\04") - (data (i32.const 3356) "\1c") - (data (i32.const 3368) "\0f\00\00\00\08\00\00\00\05") - (data (i32.const 3388) "\1c") - (data (i32.const 3400) "\0e\00\00\00\08\00\00\00\06") - (data (i32.const 3420) "\1c") - (data (i32.const 3432) "\0e\00\00\00\08\00\00\00\07") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\0e\00\00\00\08\00\00\00\08") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\0e\00\00\00\08\00\00\00\t") - (data (i32.const 3516) "\1c") - (data (i32.const 3528) "\0e\00\00\00\08\00\00\00\n") - (data (i32.const 3548) "\1c") - (data (i32.const 3560) "\0e\00\00\00\08\00\00\00\0b") - (data (i32.const 3580) "\1c") - (data (i32.const 3592) "\0e\00\00\00\08\00\00\00\0c") - (data (i32.const 3612) "\1c") - (data (i32.const 3624) "\0e\00\00\00\08\00\00\00\0d") - (data (i32.const 3644) ",") - (data (i32.const 3656) "\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 3692) "\1c") - (data (i32.const 3704) "\10\00\00\00\08\00\00\00\0e") - (data (i32.const 3728) "\11\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 3756) "$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19") + (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\00o\00o") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00P\t") + (data (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 2476) "\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") + (data (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") + (data (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00i\00r\00e") + (data (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00i\00r") + (data (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00W\00a\00t\00e\00r") + (data (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00P\n\00\00p\n\00\00\90\n") + (data (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") + (data (i32.const 2860) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") + (data (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 2940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") + (data (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00+\00 ") + (data (i32.const 3020) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") + (data (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08") + (data (i32.const 3116) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3148) ",\00\00\00\00\00\00\00\00\00\00\00\03\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 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01") + (data (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\02") + (data (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b") + (data (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c") + (data (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0d") + (data (i32.const 3644) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\0e") + (data (i32.const 3728) "\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$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19") (table $0 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)) @@ -1515,7 +1451,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -1529,17 +1465,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -1550,19 +1486,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1633,1115 +1569,71 @@ local.tee $2 global.get $~lib/rt/itcms/threshold i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + i32.add + global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -3475,8 +2367,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -3501,7 +2393,7 @@ end local.get $0 i32.load - local.set $1 + local.set $5 local.get $0 i32.load offset=4 local.set $3 @@ -3509,49 +2401,50 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store local.get $0 i32.load offset=8 - local.set $5 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $4 local.get $0 i32.load offset=4 local.set $3 @@ -3559,21 +2452,21 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 return @@ -3592,43 +2485,43 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -3644,84 +2537,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 + local.tee $5 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -3731,30 +2624,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -3763,16 +2656,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -3782,8 +2675,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -3791,15 +2684,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -3810,7 +2703,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -3822,13 +2715,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -3839,9 +2732,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -3893,26 +2786,16 @@ block $~lib/staticarray/StaticArray block $std/staticarray/Ref block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end return @@ -3935,17 +2818,17 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 @@ -3988,17 +2871,16 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f64) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f64) - (local $10 f32) + (local $9 i32) + (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4009,19 +2891,11 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i64.const 0 - i64.store offset=16 - local.get $2 - i64.const 0 - i64.store offset=24 - local.get $2 + local.tee $6 + i32.const 0 + i32.const 32 + memory.fill + local.get $6 i32.const 1056 i32.store i32.const 1056 @@ -4178,17 +3052,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $6 i32.const 1312 i32.const 12 - call $~lib/memory/memory.copy - local.get $2 + memory.copy + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4203,9 +3077,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4220,9 +3094,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4237,9 +3111,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 20 i32.sub i32.load offset=16 @@ -4257,16 +3131,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4282,17 +3156,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $6 i32.const 1312 i32.const 12 - call $~lib/memory/memory.copy - local.get $2 + memory.copy + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $6 i32.store - local.get $2 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4309,24 +3183,24 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $6 i32.store offset=4 - local.get $2 + local.get $6 i32.const 0 call $std/staticarray/Ref#constructor call $~lib/staticarray/StaticArray#__uset - local.get $2 + local.get $6 i32.const 1 call $std/staticarray/Ref#constructor call $~lib/staticarray/StaticArray#__uset - local.get $2 + local.get $6 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 i32.const 0 global.set $std/staticarray/arr4 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4335,23 +3209,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $7 i32.const 0 i32.store - local.get $2 + local.get $7 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 + local.get $6 + local.get $7 i32.store offset=4 - local.get $2 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4368,7 +3242,7 @@ unreachable end loop $for-loop|0 - local.get $2 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4377,7 +3251,7 @@ local.get $0 i32.gt_s if - local.get $2 + local.get $7 local.get $0 call $~lib/staticarray/StaticArray#__get if @@ -4400,16 +3274,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $3 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $2 + local.tee $6 i32.store offset=4 - local.get $3 + local.get $0 i32.load offset=12 - local.get $2 + local.get $6 i32.const 20 i32.sub i32.load offset=16 @@ -4424,19 +3298,17 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $3 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.gt_s if + local.get $6 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray#__get - local.get $3 local.get $0 + local.get $2 call $~lib/array/Array#__get i32.ne if @@ -4447,10 +3319,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -4459,11 +3331,11 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - local.get $0 + local.get $2 call $~lib/staticarray/StaticArray.fromArray local.tee $0 i32.store offset=4 @@ -4485,25 +3357,25 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.const 1856 - i32.const 8 - call $~lib/memory/memory.copy - local.get $3 + i64.load align=1 + i64.store align=1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.const 1888 - i32.const 4 - call $~lib/memory/memory.copy + i32.load align=1 + i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store offset=12 - local.get $3 - local.get $0 + local.get $2 + local.get $6 call $~lib/staticarray/StaticArray.concat local.tee $0 i32.store offset=8 @@ -4527,15 +3399,15 @@ i32.const 0 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.const 1920 i32.const 0 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store offset=12 - local.get $3 - local.get $0 + local.get $2 + local.get $6 call $~lib/staticarray/StaticArray.concat local.tee $0 i32.store offset=8 @@ -4545,7 +3417,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4564,26 +3436,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.const 2128 i32.const 20 - call $~lib/memory/memory.copy - local.get $4 + memory.copy + local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $3 + local.tee $0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4599,7 +3471,7 @@ unreachable end loop $for-loop|2 - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4608,22 +3480,22 @@ local.get $1 i32.gt_s if - local.get $4 + local.get $2 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store - local.get $3 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=12 - local.get $2 - local.get $0 + local.get $6 + local.get $7 call $~lib/string/String.__eq i32.eqz if @@ -4642,13 +3514,13 @@ end end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4664,15 +3536,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $6 local.get $1 i32.store - local.get $0 + local.get $6 i32.const 1984 i32.store offset=12 local.get $1 @@ -4687,18 +3559,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4711,13 +3583,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> local.tee $0 i32.store offset=4 - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4741,7 +3613,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4753,7 +3625,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4769,7 +3641,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4790,7 +3662,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4815,15 +3687,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -4836,7 +3708,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4857,7 +3729,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4882,15 +3754,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4906,29 +3778,29 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 2304 i32.const 20 - call $~lib/memory/memory.copy - local.get $2 + memory.copy + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $1 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4948,18 +3820,18 @@ i32.const 9 i32.const 2416 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $1 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4980,16 +3852,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2448 i32.const 20 - call $~lib/memory/memory.copy - local.get $0 + memory.copy + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $0 + local.get $1 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5006,7 +3878,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5021,7 +3893,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5036,7 +3908,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5054,51 +3926,51 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2496 - i32.const 8 - call $~lib/memory/memory.copy + i64.load align=1 + i64.store align=1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 i32.const 0 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $0 local.get $1 + local.get $2 i32.lt_s if i32.const 1 - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $2 + local.get $0 i32.add f64.load - local.tee $9 + local.tee $4 f64.const nan:0x8000000000000 f64.eq - local.get $9 - local.get $9 + local.get $4 + local.get $4 f64.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end @@ -5117,51 +3989,51 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2528 - i32.const 4 - call $~lib/memory/memory.copy + i32.load align=1 + i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.set $0 + local.set $1 i32.const 0 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|09 - local.get $0 local.get $1 + local.get $2 i32.lt_s if i32.const 1 - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add f32.load - local.tee $10 + local.tee $5 f32.const nan:0x400000 f32.eq - local.get $10 - local.get $10 + local.get $5 + local.get $5 f32.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|09 end end @@ -5180,36 +4052,36 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.const 2560 i32.const 12 - call $~lib/memory/memory.copy - local.get $3 + memory.copy + local.get $2 i32.store offset=16 i32.const 0 local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $6 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf loop $while-continue|012 local.get $0 - local.get $2 + local.get $6 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 2 @@ -5239,25 +4111,25 @@ i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf13 - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $6 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 loop $while-continue|028 local.get $0 - local.get $2 + local.get $6 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 7 @@ -5289,29 +4161,29 @@ i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf29 - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $6 i32.const 2 i32.le_u i32.const 1 - local.get $2 + local.get $6 select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 loop $while-continue|033 local.get $0 - local.get $2 + local.get $6 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 9 @@ -5341,7 +4213,7 @@ i32.const -1 local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5372,7 +4244,7 @@ local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 2 @@ -5402,7 +4274,7 @@ i32.const -1 local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf38 - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5433,7 +4305,7 @@ local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 2 @@ -5465,18 +4337,11 @@ local.tee $2 i32.const 2592 i32.const 16 - call $~lib/memory/memory.copy + memory.copy local.get $2 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf @@ -5490,17 +4355,12 @@ i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf local.get $0 - local.get $3 + local.get $0 i32.add local.get $0 i32.const 1 i32.sub - local.get $3 local.get $0 - local.get $3 - i32.le_s - select - local.get $3 i32.const 0 i32.lt_s select @@ -5542,32 +4402,25 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $3 - local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 - local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 local.get $0 - local.get $3 + local.get $0 i32.add - local.get $3 + local.get $0 i32.const 1 i32.sub local.get $0 - local.get $0 - local.get $3 - i32.ge_s - select - local.get $0 i32.const 0 i32.lt_s select @@ -5767,7 +4620,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 local.get $2 i32.const 20 @@ -5775,19 +4628,19 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $while-continue|056 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 @@ -5796,17 +4649,17 @@ i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|056 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -5821,17 +4674,17 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 2736 i32.const 12 - call $~lib/memory/memory.copy - local.get $2 + memory.copy + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5861,8 +4714,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5892,8 +4745,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5923,8 +4776,8 @@ global.get $~lib/memory/__stack_pointer i32.const 3008 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5954,8 +4807,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5963,9 +4816,9 @@ i32.shr_u i32.const 2800 call $~lib/util/string/joinStringArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5976,14 +4829,14 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 2800 i32.store - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5991,16 +4844,16 @@ i32.shr_u i32.const 2800 call $~lib/util/string/joinStringArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 local.get $1 + i32.store offset=12 local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -6015,34 +4868,34 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 3104 - i32.const 8 - call $~lib/memory/memory.copy - local.get $2 + i64.load align=1 + i64.store align=1 + local.get $1 i32.store offset=16 i32.const 1 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 1 i32.gt_u select local.set $0 loop $for-loop|060 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.const 1 i32.store @@ -6053,7 +4906,7 @@ br $for-loop|060 end end - local.get $2 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6064,7 +4917,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6081,68 +4934,68 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.const 3136 i32.const 12 - call $~lib/memory/memory.copy - local.get $5 + memory.copy + local.get $1 i32.store offset=16 - local.get $5 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const 1 i32.gt_u if i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.const 1 i32.shr_u - local.set $4 - local.get $0 + local.set $6 + local.get $2 i32.const 1 i32.sub - local.set $3 + local.set $2 loop $while-continue|064 - local.get $1 - local.get $4 + local.get $0 + local.get $6 i32.lt_u if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $5 + local.get $1 i32.add - local.tee $0 + local.tee $7 i32.load - local.set $2 + local.set $8 + local.get $7 + local.get $2 local.get $0 - local.get $3 - local.get $1 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $1 i32.add - local.tee $0 + local.tee $7 i32.load i32.store - local.get $0 - local.get $2 + local.get $7 + local.get $8 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|064 end end end - local.get $5 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6155,7 +5008,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6168,7 +5021,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6185,62 +5038,50 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.const 3168 i32.const 20 - call $~lib/memory/memory.copy - local.get $4 + memory.copy + local.get $1 i32.store offset=16 - local.get $4 + local.get $1 + i32.const 3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - local.set $0 - i32.const 0 - local.tee $1 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.get $4 - i32.const 3 - local.get $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 3 - i32.gt_s + i32.gt_u select local.tee $2 i32.const 2 i32.shl + local.get $1 i32.add local.get $0 i32.const 0 i32.lt_s if (result i32) local.get $0 - local.get $3 + local.get $0 i32.add - local.tee $0 + local.tee $6 i32.const 0 - local.get $0 + local.get $6 i32.const 0 i32.gt_s select else local.get $0 - local.get $3 - local.get $0 - local.get $3 - i32.lt_s - select end local.get $2 i32.sub local.tee $2 - local.get $3 + local.get $0 local.tee $0 local.get $0 local.get $2 @@ -6248,8 +5089,8 @@ select i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $4 + memory.copy + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6262,7 +5103,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6275,7 +5116,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6288,7 +5129,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6301,7 +5142,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6321,14 +5162,14 @@ local.tee $7 i32.const 3216 i32.const 12 - call $~lib/memory/memory.copy + memory.copy local.get $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $1 i32.const 3248 i32.store offset=12 - local.get $6 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6347,44 +5188,46 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $2 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 + local.set $8 + i32.const 0 + local.set $0 loop $for-loop|042 - local.get $1 - local.get $5 + local.get $0 + local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.tee $2 + local.tee $9 local.get $7 i32.add i32.load - local.set $0 + local.set $10 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $3 + local.get $8 + local.get $9 i32.add + local.get $10 local.get $0 - local.get $1 local.get $7 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|042 end end @@ -6392,10 +5235,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $6 - local.get $4 i32.store offset=4 - local.get $4 + local.get $6 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6408,7 +5251,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6421,7 +5264,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6445,11 +5288,11 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 loop $for-loop|070 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -6483,10 +5326,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $11 + local.tee $8 i32.const 3312 i32.store offset=12 - local.get $11 + local.get $8 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6503,7 +5346,7 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $9 i32.store local.get $7 i32.const 20 @@ -6511,43 +5354,42 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $13 + local.set $10 loop $for-loop|045 - local.get $8 - local.get $13 + local.get $3 + local.get $10 i32.lt_s if - local.get $8 + local.get $3 i32.const 2 i32.shl local.get $7 i32.add i32.load - local.set $12 + local.set $11 i32.const 3 global.set $~argumentsLength - local.get $12 - local.get $8 + local.get $11 + local.get $3 local.get $7 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $3 + local.get $9 i32.load offset=12 - local.tee $14 + local.tee $12 i32.const 1 i32.add - local.tee $6 - local.get $3 local.tee $2 + local.get $9 i32.load offset=8 local.tee $0 i32.const 2 i32.shr_u i32.gt_u if - local.get $6 + local.get $2 i32.const 268435455 i32.gt_u if @@ -6568,27 +5410,27 @@ i32.const 1073741820 i32.lt_u select - local.tee $1 - local.get $6 + local.tee $0 + local.get $2 i32.const 8 - local.get $6 + local.get $2 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $0 + local.tee $1 local.get $0 local.get $1 - i32.lt_u + i32.gt_u select - local.tee $5 - local.get $2 + local.tee $6 + local.get $9 i32.load local.tee $1 i32.const 20 i32.sub - local.tee $4 + local.tee $13 i32.load i32.const -4 i32.and @@ -6596,67 +5438,67 @@ i32.sub i32.le_u if - local.get $4 - local.get $5 + local.get $13 + local.get $6 i32.store offset=16 local.get $1 local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $5 - local.get $4 + local.get $6 + local.get $13 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $0 local.get $1 - local.get $5 - local.get $4 + local.get $6 + local.get $13 i32.load offset=16 - local.tee $4 - local.get $4 - local.get $5 - i32.gt_u + local.tee $13 + local.get $6 + local.get $13 + i32.lt_u select - call $~lib/memory/memory.copy + memory.copy end local.get $0 local.get $1 i32.ne if - local.get $2 + local.get $9 local.get $0 i32.store - local.get $2 + local.get $9 local.get $0 i32.store offset=4 local.get $0 if - local.get $2 + local.get $9 local.get $0 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $2 - local.get $5 + local.get $9 + local.get $6 i32.store offset=8 end - local.get $2 + local.get $9 i32.load offset=4 - local.get $14 + local.get $12 i32.const 2 i32.shl i32.add - local.get $12 + local.get $11 i32.store + local.get $9 local.get $2 - local.get $6 i32.store offset=12 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 + local.set $3 br $for-loop|045 end end @@ -6664,10 +5506,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $3 + local.get $8 + local.get $9 i32.store offset=24 - local.get $3 + local.get $9 i32.load offset=12 i32.const 2 i32.ne @@ -6679,7 +5521,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6692,7 +5534,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6718,10 +5560,10 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $3 + local.set $2 loop $for-loop|076 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -6730,11 +5572,11 @@ local.get $7 i32.add i32.load - local.set $2 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $1 - local.get $2 + local.get $3 local.get $0 local.get $7 i32.const 3344 @@ -6825,11 +5667,11 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 loop $for-loop|084 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -6837,11 +5679,11 @@ local.get $7 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $2 local.get $1 local.get $7 i32.const 3408 @@ -6879,11 +5721,11 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 loop $for-loop|089 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -6891,11 +5733,11 @@ local.get $7 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $2 local.get $1 local.get $7 i32.const 3440 @@ -6932,11 +5774,11 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 loop $for-loop|093 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -6944,11 +5786,11 @@ local.get $7 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 local.get $1 local.get $7 i32.const 3472 @@ -6987,11 +5829,11 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 loop $for-loop|098 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -6999,11 +5841,11 @@ local.get $7 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 local.get $1 local.get $7 i32.const 3504 @@ -7040,12 +5882,12 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#findIndex loop $for-loop|0102 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -7093,12 +5935,12 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#findIndex104 loop $for-loop|0107 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 @@ -7248,7 +6090,7 @@ local.tee $1 i32.const 3664 i32.const 16 - call $~lib/memory/memory.copy + memory.copy local.get $1 i32.store offset=28 i32.const 0 @@ -7459,7 +6301,7 @@ local.get $3 local.get $2 local.get $4 - call $~lib/memory/memory.copy + memory.copy end local.get $5 local.get $3 @@ -7528,7 +6370,7 @@ local.get $0 i32.load offset=4 local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -7570,9 +6412,6 @@ i32.load offset=16 i32.const 2 i32.shr_u - i32.const 0 - local.get $1 - select local.tee $2 i32.add local.tee $4 @@ -7600,7 +6439,7 @@ i32.const 2 i32.shl local.tee $0 - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -7608,7 +6447,7 @@ local.get $2 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -7642,13 +6481,13 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -7658,81 +6497,83 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.set $1 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.get $1 + local.get $4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select i32.const 2 i32.shl - local.tee $2 + local.tee $3 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store - local.get $1 + local.get $4 i32.const 2 i32.shl local.get $0 i32.add local.set $0 + i32.const 0 + local.set $2 loop $while-continue|0 local.get $2 local.get $3 - i32.gt_u + i32.lt_u if - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.add local.get $0 - local.get $3 + local.get $2 i32.add i32.load - local.tee $1 + local.tee $4 i32.store - local.get $1 + local.get $4 if - local.get $4 local.get $1 + local.get $4 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $2 i32.const 4 i32.add - local.set $3 + local.set $2 br $while-continue|0 end end @@ -7740,7 +6581,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $1 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -7809,7 +6650,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7837,10 +6677,7 @@ local.tee $5 local.get $1 i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $6 + local.tee $3 i32.add local.tee $4 i32.const 268435455 @@ -7858,33 +6695,33 @@ i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $4 i32.store - local.get $7 + local.get $4 i32.load offset=4 - local.set $4 + local.set $6 local.get $5 i32.const 2 i32.shl - local.set $5 + local.set $7 loop $for-loop|0 local.get $2 - local.get $5 + local.get $7 i32.lt_u if local.get $2 - local.get $4 + local.get $6 i32.add local.get $0 local.get $2 i32.add i32.load - local.tee $8 + local.tee $5 i32.store - local.get $8 + local.get $5 if - local.get $7 - local.get $8 + local.get $4 + local.get $5 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -7895,42 +6732,44 @@ br $for-loop|0 end end - local.get $4 - local.get $5 + local.get $6 + local.get $7 i32.add local.set $0 local.get $1 i32.load offset=4 - local.set $1 - local.get $6 + local.set $2 + local.get $3 i32.const 2 i32.shl - local.set $2 + local.set $3 + i32.const 0 + local.set $1 loop $for-loop|1 - local.get $2 + local.get $1 local.get $3 - i32.gt_u + i32.lt_u if local.get $0 - local.get $3 + local.get $1 i32.add local.get $1 - local.get $3 + local.get $2 i32.add i32.load - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 if - local.get $7 local.get $4 + local.get $5 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 + local.set $1 br $for-loop|1 end end @@ -7938,7 +6777,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $4 ) (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -8087,7 +6926,7 @@ local.tee $7 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $7 i32.add @@ -8104,7 +6943,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $3 i32.add @@ -8142,7 +6981,7 @@ i32.shr_u i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end global.get $~lib/memory/__stack_pointer i32.const 12 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.debug.wat similarity index 88% rename from tests/compiler/std/string-casemapping.untouched.wat rename to tests/compiler/std/string-casemapping.debug.wat index 49a2dfc5da..d6d4617b3d 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -31,9 +31,9 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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/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 20068)) @@ -2251,237 +2251,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2531,7 +2300,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) @@ -2732,1278 +2501,25 @@ end local.get $2 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load i32.const 3 + i32.const -1 + i32.xor i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.const 16 + i32.sub + i32.le_u if local.get $2 local.get $1 @@ -4027,7 +2543,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) @@ -5354,17 +3870,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill memory.size i32.const 16 i32.shl @@ -8901,13 +7409,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/string-casemapping.js b/tests/compiler/std/string-casemapping.js index 0190d58097..83a5422839 100644 --- a/tests/compiler/std/string-casemapping.js +++ b/tests/compiler/std/string-casemapping.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function preInstantiate(imports) { +export function preInstantiate(imports) { imports.string_casemapping = { toUpperCaseFromIndex: function toUpperCaseFromIndex(index, codePointIndex) { const code = String.fromCodePoint(index).toUpperCase().codePointAt(codePointIndex|0); @@ -9,4 +9,4 @@ exports.preInstantiate = function preInstantiate(imports) { return code !== undefined ? code : -1; } }; -}; +} diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.release.wat similarity index 65% rename from tests/compiler/std/string-casemapping.optimized.wat rename to tests/compiler/std/string-casemapping.release.wat index 4165afc4be..0aa19a8242 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -25,461 +25,182 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37476)) (memory $0 1) - (data (i32.const 1036) "\1c") - (data (i32.const 1048) "\01") - (data (i32.const 1068) "<") - (data (i32.const 1080) "\01\00\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 (i32.const 1132) "<") - (data (i32.const 1144) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1260) "<") - (data (i32.const 1272) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1324) ",") - (data (i32.const 1336) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1404) "<") - (data (i32.const 1416) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1468) "L\03") - (data (i32.const 1480) "\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") + (data (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 1068) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1132) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1260) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1404) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1468) "L\03\00\00\00\00\00\00\00\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") (data (i32.const 2317) "\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") - (data (i32.const 2444) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") - (data (i32.const 3067) "$++++++++\01\00TVVVVVVVV") - (data (i32.const 3106) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") - (data (i32.const 3615) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data (i32.const 3701) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data (i32.const 3860) "\0cl\00\00\00\00\00\06") - (data (i32.const 3906) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") - (data (i32.const 4357) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") - (data (i32.const 4422) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data (i32.const 4535) "H") - (data (i32.const 4545) "*++++++++++++++++++++++++++") - (data (i32.const 4605) "++++++++\07\00HVVVVVVVV\02") - (data (i32.const 4680) "+++++++++++++UVVVVVVVVVVVV\0e") - (data (i32.const 4738) "$+++++++++++\07\00VVVVVVVVVVVV") - (data (i32.const 4808) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data (i32.const 4905) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4959) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 5024) "+++++++++++UVVVVVVVVVV\0e") + (data (i32.const 2444) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\0d\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\0d\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") (data (i32.const 5113) "\08\00\00V\01\00\009") (data (i32.const 5128) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 6085) "\06\'Qow") - (data (i32.const 6100) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data (i32.const 6128) "\b4\c4") - (data (i32.const 6250) "\c6\c9\00\00\00\db") - (data (i32.const 6339) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data (i32.const 6364) "\e7") - (data (i32.const 6450) "\ea") - (data (i32.const 6573) "\ed") + (data (i32.const 6085) "\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") (data (i32.const 6596) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 7004) "L") - (data (i32.const 7016) "\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") + (data (i32.const 7004) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") (data (i32.const 7085) "\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") - (data (i32.const 7212) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 7756) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") - (data (i32.const 7842) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") - (data (i32.const 7900) "\f8\03") - (data (i32.const 7927) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") - (data (i32.const 7974) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data (i32.const 8000) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data (i32.const 8038) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") - (data (i32.const 8210) "\f2\07\c0\7f") - (data (i32.const 8226) "\f2\1f@?") - (data (i32.const 8239) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data (i32.const 8273) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data (i32.const 8299) "\10") - (data (i32.const 8311) "\e0") - (data (i32.const 8334) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") - (data (i32.const 8400) "\87\01\04\0e") - (data (i32.const 8430) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") - (data (i32.const 8518) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") - (data (i32.const 8579) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") - (data (i32.const 8635) "0") - (data (i32.const 8649) "\80\03") - (data (i32.const 8665) "\80\00\80") - (data (i32.const 8680) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data (i32.const 8716) " \00\00\00\00<>\08") - (data (i32.const 8735) "~") - (data (i32.const 8747) "p\00\00 ") - (data (i32.const 8811) "?\00\10") - (data (i32.const 8825) "\80\f7\bf\00\00\00\f0") - (data (i32.const 8842) "\03\00\ff\ff\ff\ff\03") - (data (i32.const 8858) "\01\00\00\07") - (data (i32.const 8875) "\03D\08\00\00`\10") - (data (i32.const 8900) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") - (data (i32.const 8983) "\f8\00\0e") - (data (i32.const 9000) " !\00\00\00\00\00@") - (data (i32.const 9026) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data (i32.const 9067) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") - (data (i32.const 9131) " ") - (data (i32.const 9160) "\01") - (data (i32.const 9178) "\c0\07") - (data (i32.const 9196) "n\f0\00\00\00\00\00\87") - (data (i32.const 9224) "`\00\00\00\00\00\00\00\f0") - (data (i32.const 9281) "\18") - (data (i32.const 9300) "\c0\ff\01") - (data (i32.const 9324) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") - (data (i32.const 9393) "\80\d3@") - (data (i32.const 9415) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data (i32.const 9459) "\ff\\\00\00@") - (data (i32.const 9474) "\f8\85\0d") - (data (i32.const 9506) "<\b0\01\00\000") - (data (i32.const 9522) "\f8\a7\01") - (data (i32.const 9537) "(\bf") - (data (i32.const 9551) "\e0\bc\0f") - (data (i32.const 9585) "\80\ff\06") - (data (i32.const 9619) "X\08") - (data (i32.const 9638) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") - (data (i32.const 9682) "\7f\bf") - (data (i32.const 9694) "\fc\ff\ff\fcm") - (data (i32.const 9714) "~\b4\bf") - (data (i32.const 9726) "\a3") - (data (i32.const 9770) "\18\00\00\00\00\00\00\00\ff\01") - (data (i32.const 9834) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data (i32.const 9877) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data (i32.const 9919) "`\0f") - (data (i32.const 9944) "\80\03\f8\ff\e7\0f\00\00\00<") - (data (i32.const 9972) "\1c") - (data (i32.const 9996) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data (i32.const 10028) "\7f\ff\ff\f9\db\07") - (data (i32.const 10066) "\ff?") - (data (i32.const 10121) "\f0") - (data (i32.const 10150) "\7f") - (data (i32.const 10164) "\f0\0f") - (data (i32.const 10219) "\f8") - (data (i32.const 10220) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 10764) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") - (data (i32.const 10900) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") - (data (i32.const 11008) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data (i32.const 11040) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data (i32.const 11068) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") - (data (i32.const 11162) "\02\80\00\00\ff\1f") - (data (i32.const 11180) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data (i32.const 11234) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") - (data (i32.const 11316) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data (i32.const 11344) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") - (data (i32.const 11440) "\fe\ff\ff\07\fe\ff\ff\07") - (data (i32.const 11468) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11490) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data (i32.const 11516) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data (i32.const 11552) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11572) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11596) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") - (data (i32.const 11762) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data (i32.const 11788) ",") - (data (i32.const 11800) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") - (data (i32.const 11836) ",") - (data (i32.const 11848) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") - (data (i32.const 11884) ",") - (data (i32.const 11896) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11932) ",") - (data (i32.const 11944) "\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11980) "\\") - (data (i32.const 11992) "\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 12076) "\\") - (data (i32.const 12088) "\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") - (data (i32.const 12172) "\\") - (data (i32.const 12184) "\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 12268) "<") - (data (i32.const 12280) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 12332) "<") - (data (i32.const 12344) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") - (data (i32.const 12396) "<") - (data (i32.const 12408) "\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 12460) "\\") - (data (i32.const 12472) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12556) "\\") - (data (i32.const 12568) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") - (data (i32.const 12652) "\\") - (data (i32.const 12664) "\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12748) "\\") - (data (i32.const 12760) "\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") - (data (i32.const 12844) "\\") - (data (i32.const 12856) "\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") - (data (i32.const 12940) "\\") - (data (i32.const 12952) "\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") - (data (i32.const 13036) "L") - (data (i32.const 13048) "\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 13116) "L") - (data (i32.const 13128) "\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 13196) "L") - (data (i32.const 13208) "\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") - (data (i32.const 13276) "L") - (data (i32.const 13288) "\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") - (data (i32.const 13356) "<") - (data (i32.const 13368) "\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 13420) "<") - (data (i32.const 13432) "\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 13484) "L") - (data (i32.const 13496) "\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") - (data (i32.const 13564) "L") - (data (i32.const 13576) "\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") - (data (i32.const 13644) "L") - (data (i32.const 13656) "\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13724) "L") - (data (i32.const 13736) "\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13804) "<") - (data (i32.const 13816) "\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 13868) "<") - (data (i32.const 13880) "\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 13932) "L") - (data (i32.const 13944) "\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 14012) "L") - (data (i32.const 14024) "\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 14092) "L") - (data (i32.const 14104) "\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") - (data (i32.const 14172) "L") - (data (i32.const 14184) "\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") - (data (i32.const 14252) "\9c") - (data (i32.const 14264) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14412) "\9c") - (data (i32.const 14424) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") - (data (i32.const 14572) "\9c") - (data (i32.const 14584) "\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14732) "\1c") - (data (i32.const 14744) "\01\00\00\00\02\00\00\00\df") - (data (i32.const 14764) "\1c") - (data (i32.const 14776) "\01\00\00\00\04\00\00\00S\00S") - (data (i32.const 14796) "\1c") - (data (i32.const 14808) "\01\00\00\00\02\00\00\000\01") - (data (i32.const 14828) "\1c") - (data (i32.const 14840) "\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 14860) "\cc") - (data (i32.const 14872) "\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 15068) "\cc") - (data (i32.const 15080) "\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 15276) "\1c") - (data (i32.const 15288) "\01\00\00\00\04\00\00\00s\00s") - (data (i32.const 15308) "\1c") - (data (i32.const 15320) "\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 15340) "\1c") - (data (i32.const 15352) "\01\00\00\00\04\00\00\00f\00i") - (data (i32.const 15372) "\cc") - (data (i32.const 15384) "\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 15580) ",") - (data (i32.const 15592) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 15628) "\1c") - (data (i32.const 15640) "\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 15660) "\1c") - (data (i32.const 15672) "\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 15692) "\1c") - (data (i32.const 15704) "\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 15724) "\1c") - (data (i32.const 15736) "\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 15756) "\1c") - (data (i32.const 15768) "\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 15788) "\1c") - (data (i32.const 15800) "\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 15820) "\1c") - (data (i32.const 15832) "\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 15852) "\1c") - (data (i32.const 15864) "\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 15884) "\1c") - (data (i32.const 15896) "\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 15916) "\1c") - (data (i32.const 15928) "\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 15948) "\1c") - (data (i32.const 15960) "\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 15980) "\1c") - (data (i32.const 15992) "\01\00\00\00\04\00\00\00\a3\03 ") - (data (i32.const 16012) "\1c") - (data (i32.const 16024) "\01\00\00\00\04\00\00\00\c3\03 ") - (data (i32.const 16044) "\1c") - (data (i32.const 16056) "\01\00\00\00\06\00\00\00 \00\a3\03 ") - (data (i32.const 16076) "\1c") - (data (i32.const 16088) "\01\00\00\00\06\00\00\00 \00\c3\03 ") - (data (i32.const 16108) "\1c") - (data (i32.const 16120) "\01\00\00\00\06\00\00\00a\00\a3\03 ") - (data (i32.const 16140) "\1c") - (data (i32.const 16152) "\01\00\00\00\06\00\00\00a\00\c2\03 ") - (data (i32.const 16172) "\1c") - (data (i32.const 16184) "\01\00\00\00\06\00\00\00a\00\a3\03\n") - (data (i32.const 16204) "\1c") - (data (i32.const 16216) "\01\00\00\00\06\00\00\00a\00\c2\03\n") - (data (i32.const 16236) "\1c") - (data (i32.const 16248) "\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 16268) "\1c") - (data (i32.const 16280) "\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 16300) "\1c") - (data (i32.const 16312) "\01\00\00\00\06\00\00\00a\00\a3\03b") - (data (i32.const 16332) "\1c") - (data (i32.const 16344) "\01\00\00\00\06\00\00\00a\00\c3\03b") - (data (i32.const 16364) "\1c") - (data (i32.const 16376) "\01\00\00\00\06\00\00\00\a3\03\a3\03 ") - (data (i32.const 16396) "\1c") - (data (i32.const 16408) "\01\00\00\00\06\00\00\00\c3\03\c2\03 ") - (data (i32.const 16428) "\1c") - (data (i32.const 16440) "\01\00\00\00\06\00\00\001\00\a3\03 ") - (data (i32.const 16460) "\1c") - (data (i32.const 16472) "\01\00\00\00\06\00\00\001\00\c3\03 ") - (data (i32.const 16492) "\1c") - (data (i32.const 16504) "\01\00\00\00\06\00\00\00;\00\a3\03 ") - (data (i32.const 16524) "\1c") - (data (i32.const 16536) "\01\00\00\00\06\00\00\00;\00\c3\03 ") - (data (i32.const 16556) "\1c") - (data (i32.const 16568) "\01\00\00\00\06\00\00\00\01\03\a3\03 ") - (data (i32.const 16588) "\1c") - (data (i32.const 16600) "\01\00\00\00\06\00\00\00\01\03\c3\03 ") - (data (i32.const 16620) "\1c") - (data (i32.const 16632) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") - (data (i32.const 16652) "\1c") - (data (i32.const 16664) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") - (data (i32.const 16684) "\1c") - (data (i32.const 16696) "\01\00\00\00\06\00\00\00\a3\03\a3\03-") - (data (i32.const 16716) "\1c") - (data (i32.const 16728) "\01\00\00\00\06\00\00\00\c3\03\c2\03-") - (data (i32.const 16748) "\1c") - (data (i32.const 16760) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") - (data (i32.const 16780) "\1c") - (data (i32.const 16792) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") - (data (i32.const 16812) "\1c") - (data (i32.const 16824) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data (i32.const 16844) "\1c") - (data (i32.const 16856) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data (i32.const 16876) "\1c") - (data (i32.const 16888) "\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 16908) "\1c") - (data (i32.const 16920) "\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 16940) "\1c") - (data (i32.const 16952) "\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 16972) "\1c") - (data (i32.const 16984) "\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 17004) "\1c") - (data (i32.const 17016) "\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 17036) "\1c") - (data (i32.const 17048) "\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 17068) "\1c") - (data (i32.const 17080) "\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 17100) "\1c") - (data (i32.const 17112) "\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 17132) "\1c") - (data (i32.const 17144) "\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 17164) "\1c") - (data (i32.const 17176) "\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 17196) "\1c") - (data (i32.const 17208) "\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 17228) "\1c") - (data (i32.const 17240) "\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 17260) "\1c") - (data (i32.const 17272) "\01\00\00\00\06\00\00\00A\00\a3\03B") - (data (i32.const 17292) "\1c") - (data (i32.const 17304) "\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 17324) "\1c") - (data (i32.const 17336) "\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 17356) "\1c") - (data (i32.const 17368) "\01\00\00\00\08\00\00\00A\00\a3\03.\00b") - (data (i32.const 17388) "\1c") - (data (i32.const 17400) "\01\00\00\00\08\00\00\00a\00\c3\03.\00b") - (data (i32.const 17420) "\1c") - (data (i32.const 17432) "\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") - (data (i32.const 17452) "\1c") - (data (i32.const 17464) "\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") - (data (i32.const 17484) "\1c") - (data (i32.const 17496) "\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") - (data (i32.const 17516) "\1c") - (data (i32.const 17528) "\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") - (data (i32.const 17548) "\1c") - (data (i32.const 17560) "\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 17580) "\1c") - (data (i32.const 17592) "\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 17612) "\1c") - (data (i32.const 17624) "\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 17644) "\1c") - (data (i32.const 17656) "\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 17676) "\1c") - (data (i32.const 17688) "\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 17708) "\1c") - (data (i32.const 17720) "\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 17740) "\1c") - (data (i32.const 17752) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") - (data (i32.const 17772) "\1c") - (data (i32.const 17784) "\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") - (data (i32.const 17804) "\1c") - (data (i32.const 17816) "\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 17836) "\1c") - (data (i32.const 17848) "\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 17868) "\1c") - (data (i32.const 17880) "\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") - (data (i32.const 17900) "\1c") - (data (i32.const 17912) "\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") - (data (i32.const 17932) "\1c") - (data (i32.const 17944) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data (i32.const 17964) "\1c") - (data (i32.const 17976) "\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data (i32.const 17996) "\1c") - (data (i32.const 18008) "\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") - (data (i32.const 18028) "\1c") - (data (i32.const 18040) "\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") - (data (i32.const 18060) "\1c") - (data (i32.const 18072) "\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 18092) "\1c") - (data (i32.const 18104) "\01\00\00\00\04\00\00\00F\00F") - (data (i32.const 18124) "\1c") - (data (i32.const 18136) "\01\00\00\00\04\00\00\00F\00I") - (data (i32.const 18156) "\1c") - (data (i32.const 18168) "\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 18188) "\1c") - (data (i32.const 18200) "\01\00\00\00\04\00\00\00F\00L") - (data (i32.const 18220) "\1c") - (data (i32.const 18232) "\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 18252) "\1c") - (data (i32.const 18264) "\01\00\00\00\06\00\00\00F\00F\00I") - (data (i32.const 18284) "\1c") - (data (i32.const 18296) "\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 18316) "\1c") - (data (i32.const 18328) "\01\00\00\00\06\00\00\00F\00F\00L") - (data (i32.const 18348) "\1c") - (data (i32.const 18360) "\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 18380) "\1c") - (data (i32.const 18392) "\01\00\00\00\04\00\00\00S\00T") - (data (i32.const 18412) "\1c") - (data (i32.const 18424) "\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 18444) "\1c") - (data (i32.const 18456) "\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 18476) "\1c") - (data (i32.const 18488) "\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 18508) "\1c") - (data (i32.const 18520) "\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 18540) "\1c") - (data (i32.const 18552) "\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 18572) "\1c") - (data (i32.const 18584) "\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 18604) "\1c") - (data (i32.const 18616) "\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 18636) "\1c") - (data (i32.const 18648) "\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 18668) "\1c") - (data (i32.const 18680) "\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 18700) "\1c") - (data (i32.const 18712) "\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 18732) "\1c") - (data (i32.const 18744) "\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 18764) "\1c") - (data (i32.const 18776) "\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 18796) "\1c") - (data (i32.const 18808) "\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 18828) "\\") - (data (i32.const 18840) "\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") - (data (i32.const 18924) "<") - (data (i32.const 18936) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18988) "|") - (data (i32.const 19000) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 19116) "<") - (data (i32.const 19128) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 19180) "\1c") - (data (i32.const 19192) "\01\00\00\00\02\00\00\000") + (data (i32.const 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\00\00\00\00\00\00\00\00\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\0d\00\00\00\00\00\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 (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\00\00\00\00\00\00\00\00\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") + (data (i32.const 11788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data (i32.const 11836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data (i32.const 11884) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11932) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11980) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 12076) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") + (data (i32.const 12172) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 12268) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 12332) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") + (data (i32.const 12396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 12460) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12556) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") + (data (i32.const 12652) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12748) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") + (data (i32.const 12844) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") + (data (i32.const 12940) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") + (data (i32.const 13036) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data (i32.const 13116) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data (i32.const 13196) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") + (data (i32.const 13276) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") + (data (i32.const 13356) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data (i32.const 13420) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data (i32.const 13484) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") + (data (i32.const 13564) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") + (data (i32.const 13644) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 13724) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 13804) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data (i32.const 13868) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data (i32.const 13932) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 14012) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 14092) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") + (data (i32.const 14172) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") + (data (i32.const 14252) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 14412) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") + (data (i32.const 14572) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 14732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df") + (data (i32.const 14764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S") + (data (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01") + (data (i32.const 14828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") + (data (i32.const 14860) "\cc\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data (i32.const 15068) "\cc\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data (i32.const 15276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s") + (data (i32.const 15308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb") + (data (i32.const 15340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i") + (data (i32.const 15372) "\cc\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data (i32.const 15580) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 15628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") + (data (i32.const 15660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f") + (data (i32.const 15692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f") + (data (i32.const 15724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f") + (data (i32.const 15756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f") + (data (i32.const 15788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f") + (data (i32.const 15820) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f") + (data (i32.const 15852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\a3\03") + (data (i32.const 15884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03") + (data (i32.const 15916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") + (data (i32.const 15948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") + (data (i32.const 15980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 ") + (data (i32.const 16012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 ") + (data (i32.const 16044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 ") + (data (i32.const 16076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 ") + (data (i32.const 16108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 ") + (data (i32.const 16140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 ") + (data (i32.const 16172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n") + (data (i32.const 16204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n") + (data (i32.const 16236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") + (data (i32.const 16268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") + (data (i32.const 16300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b") + (data (i32.const 16332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b") + (data (i32.const 16364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data (i32.const 16396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data (i32.const 16428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 ") + (data (i32.const 16460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 ") + (data (i32.const 16492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 ") + (data (i32.const 16524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 ") + (data (i32.const 16556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 ") + (data (i32.const 16588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 ") + (data (i32.const 16620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data (i32.const 16652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data (i32.const 16684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-") + (data (i32.const 16716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-") + (data (i32.const 16748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data (i32.const 16780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data (i32.const 16812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data (i32.const 16844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data (i32.const 16876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data (i32.const 16908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data (i32.const 16940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") + (data (i32.const 16972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") + (data (i32.const 17004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data (i32.const 17036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data (i32.const 17068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data (i32.const 17100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data (i32.const 17132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") + (data (i32.const 17164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") + (data (i32.const 17196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data (i32.const 17228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data (i32.const 17260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B") + (data (i32.const 17292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data (i32.const 17324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data (i32.const 17356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data (i32.const 17388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data (i32.const 17420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data (i32.const 17452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data (i32.const 17484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data (i32.const 17516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data (i32.const 17548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") + (data (i32.const 17580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") + (data (i32.const 17612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data (i32.const 17644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data (i32.const 17676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data (i32.const 17708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data (i32.const 17740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data (i32.const 17772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data (i32.const 17804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data (i32.const 17836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data (i32.const 17868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data (i32.const 17900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data (i32.const 17932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data (i32.const 17964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data (i32.const 17996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data (i32.const 18028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data (i32.const 18060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb") + (data (i32.const 18092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F") + (data (i32.const 18124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I") + (data (i32.const 18156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb") + (data (i32.const 18188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L") + (data (i32.const 18220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb") + (data (i32.const 18252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I") + (data (i32.const 18284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb") + (data (i32.const 18316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L") + (data (i32.const 18348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb") + (data (i32.const 18380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T") + (data (i32.const 18412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb") + (data (i32.const 18444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01") + (data (i32.const 18476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") + (data (i32.const 18508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e") + (data (i32.const 18540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 18572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 18604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 18636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 18668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 18700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 18732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 18764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 18796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") + (data (i32.const 18828) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") + (data (i32.const 18924) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 18988) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 19116) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 19180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 19212) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 19612) "\1c\04") - (data (i32.const 19624) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 20668) "\\") - (data (i32.const 20680) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 20764) "<") - (data (i32.const 20776) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 20828) "\\") - (data (i32.const 20840) "\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") - (data (i32.const 20924) "<") - (data (i32.const 20936) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 20988) "<") - (data (i32.const 21000) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 21056) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 21084) "\a4") + (data (i32.const 19612) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 20668) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 20764) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 20828) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") + (data (i32.const 20924) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 20988) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 21056) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a4") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -1582,7 +1303,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1597,7 +1318,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1610,7 +1331,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1618,7 +1339,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1629,16 +1350,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1649,16 +1370,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1666,7 +1387,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1674,8 +1395,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1692,7 +1413,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1702,13 +1423,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1721,40 +1442,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1814,182 +1535,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2144,893 +1694,20 @@ local.get $0 i32.add ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end local.get $0 - i32.const 3 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if local.get $3 local.get $1 @@ -3052,7 +1729,7 @@ local.get $1 i32.gt_u select - call $~lib/memory/memory.copy + memory.copy local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) @@ -3609,13 +2286,13 @@ local.get $2 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $3 i32.add local.get $1 local.get $4 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3811,32 +2488,30 @@ i32.sub i32.store16 else - i32.const -1 - local.set $10 local.get $3 i32.const 223 i32.sub i32.const 64056 i32.le_u - if - block $~lib/util/casemap/bsearch|inlined.0 + if (result i32) + block $~lib/util/casemap/bsearch|inlined.0 (result i32) local.get $2 local.set $1 i32.const 0 - local.set $5 + local.set $10 loop $while-continue|1 local.get $1 - local.get $5 + local.get $10 i32.ge_s if local.get $1 - local.get $5 + local.get $10 i32.add i32.const 3 i32.shr_u i32.const 2 i32.shl - local.tee $10 + local.tee $4 i32.const 1 i32.shl i32.const 1488 @@ -3844,35 +2519,39 @@ i32.load16_u local.get $3 i32.sub - local.tee $4 - i32.eqz - br_if $~lib/util/casemap/bsearch|inlined.0 - local.get $4 - i32.const 31 - i32.shr_u + local.tee $5 if - local.get $10 - i32.const 4 - i32.add - local.set $5 + local.get $5 + i32.const 31 + i32.shr_u + if + local.get $4 + i32.const 4 + i32.add + local.set $10 + else + local.get $4 + i32.const 4 + i32.sub + local.set $1 + end else - local.get $10 - i32.const 4 - i32.sub - local.set $1 + local.get $4 + br $~lib/util/casemap/bsearch|inlined.0 end br $while-continue|1 end end i32.const -1 - local.set $10 end + else + i32.const -1 end - local.get $10 + local.tee $1 i32.const -1 i32.xor if - local.get $10 + local.get $1 i32.const 1 i32.shl i32.const 1488 @@ -3983,10 +2662,10 @@ ) (func $start:std/string-casemapping (local $0 i64) - (local $1 i32) + (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -4008,18 +2687,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 + local.tee $5 i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill memory.size i32.const 16 i32.shl @@ -4052,19 +2723,19 @@ i32.store i32.const 1376 global.set $~lib/rt/itcms/fromSpace - local.get $1 + local.get $5 i32.const 1056 i32.store offset=8 i32.const 1056 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $1 + local.get $5 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4081,14 +2752,14 @@ i32.store offset=8 i32.const 1056 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $1 + local.get $5 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4105,14 +2776,14 @@ i32.store offset=8 i32.const 11808 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=4 - local.get $1 + local.get $5 i32.const 11856 call $~lib/string/String.__eq i32.eqz @@ -4129,14 +2800,14 @@ i32.store offset=8 i32.const 11904 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 11952 i32.store offset=4 - local.get $1 + local.get $5 i32.const 11952 call $~lib/string/String.__eq i32.eqz @@ -4153,14 +2824,14 @@ i32.store offset=8 i32.const 12000 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12096 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12096 call $~lib/string/String.__eq i32.eqz @@ -4177,14 +2848,14 @@ i32.store offset=8 i32.const 12096 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12192 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12192 call $~lib/string/String.__eq i32.eqz @@ -4201,14 +2872,14 @@ i32.store offset=8 i32.const 12288 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12352 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12352 call $~lib/string/String.__eq i32.eqz @@ -4225,14 +2896,14 @@ i32.store offset=8 i32.const 12352 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12416 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12416 call $~lib/string/String.__eq i32.eqz @@ -4249,14 +2920,14 @@ i32.store offset=8 i32.const 12480 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12576 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12576 call $~lib/string/String.__eq i32.eqz @@ -4273,14 +2944,14 @@ i32.store offset=8 i32.const 12576 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12672 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12672 call $~lib/string/String.__eq i32.eqz @@ -4297,14 +2968,14 @@ i32.store offset=8 i32.const 12768 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12864 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12864 call $~lib/string/String.__eq i32.eqz @@ -4321,14 +2992,14 @@ i32.store offset=8 i32.const 12864 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 12960 i32.store offset=4 - local.get $1 + local.get $5 i32.const 12960 call $~lib/string/String.__eq i32.eqz @@ -4345,14 +3016,14 @@ i32.store offset=8 i32.const 13056 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13136 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13136 call $~lib/string/String.__eq i32.eqz @@ -4369,14 +3040,14 @@ i32.store offset=8 i32.const 13216 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13296 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13296 call $~lib/string/String.__eq i32.eqz @@ -4393,14 +3064,14 @@ i32.store offset=8 i32.const 13376 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13440 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13440 call $~lib/string/String.__eq i32.eqz @@ -4417,14 +3088,14 @@ i32.store offset=8 i32.const 13504 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13584 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13584 call $~lib/string/String.__eq i32.eqz @@ -4441,14 +3112,14 @@ i32.store offset=8 i32.const 13664 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13744 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13744 call $~lib/string/String.__eq i32.eqz @@ -4465,14 +3136,14 @@ i32.store offset=8 i32.const 13824 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 13888 i32.store offset=4 - local.get $1 + local.get $5 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -4489,14 +3160,14 @@ i32.store offset=8 i32.const 13952 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14032 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14032 call $~lib/string/String.__eq i32.eqz @@ -4513,14 +3184,14 @@ i32.store offset=8 i32.const 14112 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14192 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14192 call $~lib/string/String.__eq i32.eqz @@ -4537,14 +3208,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14432 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14432 call $~lib/string/String.__eq i32.eqz @@ -4561,14 +3232,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14592 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14592 call $~lib/string/String.__eq i32.eqz @@ -4585,14 +3256,14 @@ i32.store offset=8 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14784 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14784 call $~lib/string/String.__eq i32.eqz @@ -4609,14 +3280,14 @@ i32.store offset=8 i32.const 14816 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 14848 i32.store offset=4 - local.get $1 + local.get $5 i32.const 14848 call $~lib/string/String.__eq i32.eqz @@ -4633,14 +3304,14 @@ i32.store offset=8 i32.const 14880 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15088 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15088 call $~lib/string/String.__eq i32.eqz @@ -4657,20 +3328,20 @@ i32.store offset=12 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 - local.get $1 + local.get $5 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15296 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15296 call $~lib/string/String.__eq i32.eqz @@ -4687,20 +3358,20 @@ i32.store offset=12 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 - local.get $1 + local.get $5 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15360 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15360 call $~lib/string/String.__eq i32.eqz @@ -4717,20 +3388,20 @@ i32.store offset=12 i32.const 15392 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 - local.get $1 + local.get $5 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15392 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15392 call $~lib/string/String.__eq i32.eqz @@ -4744,20 +3415,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 - local.get $1 + local.get $5 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -4771,20 +3442,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 - local.get $1 + local.get $5 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -4801,14 +3472,14 @@ i32.store offset=8 i32.const 15680 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15712 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15712 call $~lib/string/String.__eq i32.eqz @@ -4825,14 +3496,14 @@ i32.store offset=8 i32.const 15744 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15776 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15776 call $~lib/string/String.__eq i32.eqz @@ -4849,14 +3520,14 @@ i32.store offset=8 i32.const 15808 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15840 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15840 call $~lib/string/String.__eq i32.eqz @@ -4873,14 +3544,14 @@ i32.store offset=8 i32.const 15872 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15904 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15904 call $~lib/string/String.__eq i32.eqz @@ -4897,14 +3568,14 @@ i32.store offset=8 i32.const 15936 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 15968 i32.store offset=4 - local.get $1 + local.get $5 i32.const 15968 call $~lib/string/String.__eq i32.eqz @@ -4921,14 +3592,14 @@ i32.store offset=8 i32.const 16000 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16032 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16032 call $~lib/string/String.__eq i32.eqz @@ -4945,14 +3616,14 @@ i32.store offset=8 i32.const 16064 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16096 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16096 call $~lib/string/String.__eq i32.eqz @@ -4969,14 +3640,14 @@ i32.store offset=8 i32.const 16128 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16160 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16160 call $~lib/string/String.__eq i32.eqz @@ -4993,14 +3664,14 @@ i32.store offset=8 i32.const 16192 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16224 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16224 call $~lib/string/String.__eq i32.eqz @@ -5017,14 +3688,14 @@ i32.store offset=8 i32.const 16256 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16288 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16288 call $~lib/string/String.__eq i32.eqz @@ -5041,14 +3712,14 @@ i32.store offset=8 i32.const 16320 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5065,14 +3736,14 @@ i32.store offset=8 i32.const 16384 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16416 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16416 call $~lib/string/String.__eq i32.eqz @@ -5089,14 +3760,14 @@ i32.store offset=8 i32.const 16448 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16480 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16480 call $~lib/string/String.__eq i32.eqz @@ -5113,14 +3784,14 @@ i32.store offset=8 i32.const 16512 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16544 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16544 call $~lib/string/String.__eq i32.eqz @@ -5137,14 +3808,14 @@ i32.store offset=8 i32.const 16576 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16608 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16608 call $~lib/string/String.__eq i32.eqz @@ -5161,14 +3832,14 @@ i32.store offset=8 i32.const 16640 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16672 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16672 call $~lib/string/String.__eq i32.eqz @@ -5185,14 +3856,14 @@ i32.store offset=8 i32.const 16704 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16736 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16736 call $~lib/string/String.__eq i32.eqz @@ -5209,14 +3880,14 @@ i32.store offset=8 i32.const 16768 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16800 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16800 call $~lib/string/String.__eq i32.eqz @@ -5233,14 +3904,14 @@ i32.store offset=8 i32.const 16832 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16864 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16864 call $~lib/string/String.__eq i32.eqz @@ -5257,14 +3928,14 @@ i32.store offset=8 i32.const 16896 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16928 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16928 call $~lib/string/String.__eq i32.eqz @@ -5281,14 +3952,14 @@ i32.store offset=8 i32.const 16960 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16992 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16992 call $~lib/string/String.__eq i32.eqz @@ -5305,14 +3976,14 @@ i32.store offset=8 i32.const 17024 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17056 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17056 call $~lib/string/String.__eq i32.eqz @@ -5329,14 +4000,14 @@ i32.store offset=8 i32.const 17088 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17120 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17120 call $~lib/string/String.__eq i32.eqz @@ -5353,14 +4024,14 @@ i32.store offset=8 i32.const 17152 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17184 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17184 call $~lib/string/String.__eq i32.eqz @@ -5377,14 +4048,14 @@ i32.store offset=8 i32.const 17216 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17248 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17248 call $~lib/string/String.__eq i32.eqz @@ -5401,14 +4072,14 @@ i32.store offset=8 i32.const 17280 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $1 + local.get $5 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5425,14 +4096,14 @@ i32.store offset=8 i32.const 17312 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17344 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17344 call $~lib/string/String.__eq i32.eqz @@ -5449,14 +4120,14 @@ i32.store offset=8 i32.const 17376 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17408 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17408 call $~lib/string/String.__eq i32.eqz @@ -5473,14 +4144,14 @@ i32.store offset=8 i32.const 17440 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17472 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17472 call $~lib/string/String.__eq i32.eqz @@ -5497,14 +4168,14 @@ i32.store offset=8 i32.const 17504 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17536 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17536 call $~lib/string/String.__eq i32.eqz @@ -5521,14 +4192,14 @@ i32.store offset=8 i32.const 17568 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17600 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17600 call $~lib/string/String.__eq i32.eqz @@ -5545,14 +4216,14 @@ i32.store offset=8 i32.const 17632 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17664 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17664 call $~lib/string/String.__eq i32.eqz @@ -5569,14 +4240,14 @@ i32.store offset=8 i32.const 17696 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17728 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17728 call $~lib/string/String.__eq i32.eqz @@ -5593,14 +4264,14 @@ i32.store offset=8 i32.const 17760 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17792 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17792 call $~lib/string/String.__eq i32.eqz @@ -5617,14 +4288,14 @@ i32.store offset=8 i32.const 17824 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17856 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17856 call $~lib/string/String.__eq i32.eqz @@ -5641,14 +4312,14 @@ i32.store offset=8 i32.const 17888 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17920 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17920 call $~lib/string/String.__eq i32.eqz @@ -5665,14 +4336,14 @@ i32.store offset=8 i32.const 17952 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 17984 i32.store offset=4 - local.get $1 + local.get $5 i32.const 17984 call $~lib/string/String.__eq i32.eqz @@ -5689,14 +4360,14 @@ i32.store offset=8 i32.const 18016 call $~lib/string/String#toLowerCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18048 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18048 call $~lib/string/String.__eq i32.eqz @@ -5713,14 +4384,14 @@ i32.store offset=8 i32.const 18080 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18112 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18112 call $~lib/string/String.__eq i32.eqz @@ -5737,14 +4408,14 @@ i32.store offset=8 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18144 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18144 call $~lib/string/String.__eq i32.eqz @@ -5761,14 +4432,14 @@ i32.store offset=8 i32.const 18176 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18208 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18208 call $~lib/string/String.__eq i32.eqz @@ -5785,14 +4456,14 @@ i32.store offset=8 i32.const 18240 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18272 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18272 call $~lib/string/String.__eq i32.eqz @@ -5809,14 +4480,14 @@ i32.store offset=8 i32.const 18304 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18336 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18336 call $~lib/string/String.__eq i32.eqz @@ -5833,14 +4504,14 @@ i32.store offset=8 i32.const 18368 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -5857,14 +4528,14 @@ i32.store offset=8 i32.const 18432 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -5881,14 +4552,14 @@ i32.store offset=8 i32.const 18464 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18496 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18496 call $~lib/string/String.__eq i32.eqz @@ -5905,14 +4576,14 @@ i32.store offset=8 i32.const 18528 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18560 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18560 call $~lib/string/String.__eq i32.eqz @@ -5929,14 +4600,14 @@ i32.store offset=8 i32.const 18592 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18624 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18624 call $~lib/string/String.__eq i32.eqz @@ -5953,14 +4624,14 @@ i32.store offset=8 i32.const 18656 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18688 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18688 call $~lib/string/String.__eq i32.eqz @@ -5977,14 +4648,14 @@ i32.store offset=8 i32.const 18720 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18752 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18752 call $~lib/string/String.__eq i32.eqz @@ -6001,14 +4672,14 @@ i32.store offset=8 i32.const 18784 call $~lib/string/String#toUpperCase - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 18816 i32.store offset=4 - local.get $1 + local.get $5 i32.const 18816 call $~lib/string/String.__eq i32.eqz @@ -6021,24 +4692,24 @@ unreachable end loop $for-loop|0 - local.get $5 + local.get $4 i32.const 1114111 i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 call $~lib/string/String.fromCodePoint - local.tee $1 + local.tee $5 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 call $~lib/string/String#toLowerCase local.tee $6 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 call $~lib/string/String#toUpperCase - local.tee $1 + local.tee $5 i32.store offset=24 block $__inlined_func$~lib/string/String#codePointAt (result i32) i32.const -1 @@ -6134,11 +4805,11 @@ i32.sub end i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_s if - local.get $2 + local.get $1 i64.const 16 i64.shl local.get $0 @@ -6192,11 +4863,11 @@ i32.sub end i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_s if (result i64) - local.get $2 + local.get $1 i64.const 32 i64.shl local.get $0 @@ -6204,10 +4875,10 @@ else local.get $0 end - local.set $2 + local.set $1 block $__inlined_func$~lib/string/String#codePointAt2 (result i32) i32.const -1 - local.get $1 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -6220,7 +4891,7 @@ local.get $6 i32.const 1 i32.eq - local.get $1 + local.get $5 i32.load16_u local.tee $6 i32.const 64512 @@ -6233,7 +4904,7 @@ br $__inlined_func$~lib/string/String#codePointAt2 end local.get $6 - local.get $1 + local.get $5 i32.load16_u offset=2 local.tee $7 i32.const 64512 @@ -6254,7 +4925,7 @@ local.set $0 block $__inlined_func$~lib/string/String#codePointAt3 (result i32) i32.const -1 - local.get $1 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -6268,7 +4939,7 @@ local.get $6 i32.const 2 i32.eq - local.get $1 + local.get $5 i32.load16_u offset=2 local.tee $6 i32.const 64512 @@ -6281,7 +4952,7 @@ br $__inlined_func$~lib/string/String#codePointAt3 end local.get $6 - local.get $1 + local.get $5 i32.load16_u offset=4 local.tee $7 i32.const 64512 @@ -6299,11 +4970,11 @@ i32.sub end i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s if - local.get $3 + local.get $2 i64.const 16 i64.shl local.get $0 @@ -6312,7 +4983,7 @@ end block $__inlined_func$~lib/string/String#codePointAt4 (result i32) i32.const -1 - local.get $1 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -6326,7 +4997,7 @@ local.get $6 i32.const 3 i32.eq - local.get $1 + local.get $5 i32.load16_u offset=4 local.tee $6 i32.const 64512 @@ -6339,16 +5010,16 @@ br $__inlined_func$~lib/string/String#codePointAt4 end local.get $6 - local.get $1 + local.get $5 i32.load16_u offset=6 - local.tee $1 + local.tee $5 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt4 drop - local.get $1 + local.get $5 local.get $6 i32.const 10 i32.shl @@ -6357,11 +5028,11 @@ i32.sub end i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s if (result i64) - local.get $3 + local.get $2 i64.const 32 i64.shl local.get $0 @@ -6369,36 +5040,36 @@ else local.get $0 end - local.set $3 - local.get $5 + local.set $2 + local.get $4 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s local.set $0 - local.get $5 + local.get $4 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $4 + local.tee $3 i64.const 0 i64.ge_s if - local.get $4 + local.get $3 i64.const 16 i64.shl local.get $0 i64.add local.set $0 end - local.get $5 + local.get $4 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $4 + local.tee $3 i64.const 0 i64.ge_s if (result i64) - local.get $4 + local.get $3 i64.const 32 i64.shl local.get $0 @@ -6406,13 +5077,13 @@ else local.get $0 end - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s local.set $0 - local.get $5 + local.get $4 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -6427,7 +5098,7 @@ i64.add local.set $0 end - local.get $5 + local.get $4 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -6442,8 +5113,8 @@ i64.add local.set $0 end - local.get $2 - local.get $4 + local.get $1 + local.get $3 i64.ne if global.get $~lib/memory/__stack_pointer @@ -6451,7 +5122,7 @@ i32.store i32.const 18848 i32.const 1 - local.get $5 + local.get $4 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6461,20 +5132,20 @@ global.get $~lib/memory/__stack_pointer i32.const 18944 i32.store offset=4 - local.get $2 + local.get $1 call $~lib/number/I64#toString - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 i32.const 18944 - local.get $1 + local.get $5 call $~lib/string/String.__concat - 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 i32.const 0 f64.const 0 f64.const 0 @@ -6485,20 +5156,20 @@ global.get $~lib/memory/__stack_pointer i32.const 20784 i32.store offset=4 - local.get $4 + local.get $3 call $~lib/number/I64#toString - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 i32.const 20784 - local.get $1 + local.get $5 call $~lib/string/String.__concat - 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 i32.const 0 f64.const 0 f64.const 0 @@ -6508,7 +5179,7 @@ call $~lib/builtins/trace end local.get $0 - local.get $3 + local.get $2 i64.ne if global.get $~lib/memory/__stack_pointer @@ -6516,7 +5187,7 @@ i32.store i32.const 20848 i32.const 1 - local.get $5 + local.get $4 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6526,20 +5197,20 @@ global.get $~lib/memory/__stack_pointer i32.const 20944 i32.store offset=4 - local.get $3 + local.get $2 call $~lib/number/I64#toString - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 i32.const 20944 - local.get $1 + local.get $5 call $~lib/string/String.__concat - 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 i32.const 0 f64.const 0 f64.const 0 @@ -6552,18 +5223,18 @@ i32.store offset=4 local.get $0 call $~lib/number/I64#toString - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=8 i32.const 21008 - local.get $1 + local.get $5 call $~lib/string/String.__concat - 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 i32.const 0 f64.const 0 f64.const 0 @@ -6572,10 +5243,10 @@ f64.const 0 call $~lib/builtins/trace end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|0 end end @@ -6594,7 +5265,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6619,7 +5289,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $7 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6630,19 +5300,19 @@ return end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $4 i32.const 2 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $7 + local.get $3 + local.get $4 i32.lt_u if - local.get $2 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -6658,34 +5328,34 @@ i32.sub i32.const 1025 i32.lt_u - local.get $7 + local.get $4 i32.const 1 i32.sub - local.get $2 + local.get $3 i32.gt_u i32.and if - local.get $2 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $4 + local.tee $7 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - local.get $4 + local.set $3 + local.get $7 i32.const 1023 i32.and local.get $1 - local.tee $3 + local.tee $2 i32.const 1023 i32.and i32.const 10 @@ -6697,21 +5367,21 @@ i32.const 131072 i32.ge_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add - local.get $4 + local.get $7 i32.const 16 i32.shl - local.get $3 + local.get $2 i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-continue|0 end end @@ -6720,30 +5390,30 @@ i32.const 304 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add i32.const 50790505 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 else local.get $1 i32.const 931 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add i32.const 962 i32.const 963 - local.get $7 + local.get $4 i32.const 1 i32.gt_u if (result i32) @@ -6751,30 +5421,29 @@ i32.const 0 local.set $1 i32.const 0 - local.get $2 - local.tee $3 - local.tee $4 + local.get $3 + local.tee $2 i32.const 30 i32.sub - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 i32.const 0 i32.lt_s select - local.set $9 + local.set $7 loop $while-continue|1 - local.get $4 - local.get $9 + local.get $2 + local.get $7 i32.gt_s if block $~lib/util/string/codePointBefore|inlined.0 (result i32) i32.const -1 - local.get $4 + local.get $2 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 drop - local.get $4 + local.get $2 i32.const 1 i32.sub i32.const 1 @@ -6782,19 +5451,19 @@ local.get $0 i32.add i32.load16_u - local.tee $10 + local.tee $8 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $4 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $4 + local.get $2 i32.const 2 i32.sub i32.const 1 @@ -6802,16 +5471,16 @@ local.get $0 i32.add i32.load16_u - local.tee $8 + local.tee $9 i32.const 64512 i32.and i32.const 55296 i32.eq if - local.get $10 + local.get $8 i32.const 1023 i32.and - local.get $8 + local.get $9 i32.const 1023 i32.and i32.const 10 @@ -6823,8 +5492,8 @@ end end i32.const 65533 - local.get $10 - local.get $10 + local.get $8 + local.get $8 i32.const 63488 i32.and i32.const 55296 @@ -6900,14 +5569,14 @@ i32.const 1 local.set $1 end - local.get $4 + local.get $2 local.get $8 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $4 + local.set $2 br $while-continue|1 end end @@ -6919,22 +5588,22 @@ local.get $3 i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 30 i32.add local.tee $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 i32.lt_s select - local.set $3 + local.set $7 loop $while-continue|2 - local.get $3 - local.get $4 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $4 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -6945,14 +5614,14 @@ i32.and i32.const 55296 i32.eq - local.get $7 local.get $4 + local.get $2 i32.const 1 i32.add i32.ne i32.and if - local.get $4 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -7044,9 +5713,9 @@ i32.ge_u i32.const 1 i32.add - local.get $4 + local.get $2 i32.add - local.set $4 + local.set $2 br $while-continue|2 end end @@ -7064,10 +5733,10 @@ i32.const 25 i32.le_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add local.get $1 i32.const 26 @@ -7083,18 +5752,18 @@ i32.const 65536 i32.lt_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add local.get $1 i32.store16 else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add local.get $1 i32.const 65536 @@ -7113,20 +5782,20 @@ i32.shl i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 end end end end end else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add local.get $1 i32.const 7084 @@ -7134,19 +5803,19 @@ i32.load8_u i32.store16 end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - local.get $5 + local.set $3 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|0 end end - local.get $6 local.get $5 + local.get $6 i32.const 1 i32.shl call $~lib/rt/itcms/__renew diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.debug.wat similarity index 84% rename from tests/compiler/std/string-encoding.untouched.wat rename to tests/compiler/std/string-encoding.debug.wat index b1f0f4fa87..1ff3642a48 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -24,8 +24,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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/rt/__rtti_base i32 (i32.const 21568)) (global $~lib/memory/__data_end i32 (i32.const 21596)) @@ -2089,237 +2089,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2369,7 +2138,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) @@ -2380,1301 +2149,48 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String.UTF16.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) + local.get $1 + i32.const 1 + i32.shl + local.set $3 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $3 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + ) + (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + call $~lib/string/String.UTF16.decodeUnsafe + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.UTF16.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 1 - i32.shl - local.set $3 - local.get $2 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - call $~lib/string/String.UTF16.decodeUnsafe - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 i32.const 0 i32.const 2 i32.lt_s @@ -4222,7 +2738,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) @@ -5535,17 +4051,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/string-encoding/str local.set $5 @@ -6163,7 +4671,7 @@ local.get $2 local.get $0 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.release.wat similarity index 87% rename from tests/compiler/std/string-encoding.optimized.wat rename to tests/compiler/std/string-encoding.release.wat index 0d56d45193..2960233f9c 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1169,7 +1169,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1184,7 +1184,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1197,7 +1197,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1205,7 +1205,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1216,16 +1216,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1236,16 +1236,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1253,7 +1253,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1261,8 +1261,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1279,7 +1279,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1289,13 +1289,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1308,40 +1308,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1401,1132 +1401,88 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u + return + end + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq if + local.get $2 + i32.const 8 + i32.add + local.set $2 local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 + i32.const 8 i32.add local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + 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 @@ -3456,17 +2412,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 i32.const 0 - i32.store offset=24 + i32.const 28 + memory.fill local.get $0 i32.const 1056 i32.store @@ -4502,7 +3450,7 @@ i32.shr_u i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -4542,7 +3490,7 @@ local.get $2 local.get $0 local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -5035,7 +3983,7 @@ local.get $2 i32.gt_u select - call $~lib/memory/memory.copy + memory.copy local.get $1 local.set $0 end diff --git a/tests/compiler/std/string-nonnull.debug.wat b/tests/compiler/std/string-nonnull.debug.wat new file mode 100644 index 0000000000..bd051368cb --- /dev/null +++ b/tests/compiler/std/string-nonnull.debug.wat @@ -0,0 +1,280 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16428)) + (global $~lib/memory/__heap_base i32 (i32.const 16428)) + (memory $0 1) + (data (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") + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) + (func $~lib/string/String.__not (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + call $~lib/string/String#get:length + i32.eqz + end + ) + (func $start:std/string-nonnull + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $0 + call $~lib/string/String#get:length + drop + end + local.get $0 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $0 + call $~lib/string/String#get:length + drop + end + local.get $0 + if + local.get $0 + call $~lib/string/String#get:length + drop + end + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + nop + else + local.get $0 + call $~lib/string/String#get:length + drop + end + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + nop + else + local.get $0 + call $~lib/string/String#get:length + drop + end + local.get $0 + call $~lib/string/String.__not + if + nop + else + local.get $0 + call $~lib/string/String#get:length + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/string-nonnull + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16448 + i32.const 16496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/resolve-ternary.json b/tests/compiler/std/string-nonnull.json similarity index 100% rename from tests/resolve-ternary.json rename to tests/compiler/std/string-nonnull.json diff --git a/tests/compiler/std/string-nonnull.release.wat b/tests/compiler/std/string-nonnull.release.wat new file mode 100644 index 0000000000..0acdd30cb7 --- /dev/null +++ b/tests/compiler/std/string-nonnull.release.wat @@ -0,0 +1,49 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17452)) + (memory $0 1) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 17472 + i32.const 17520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + if + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/string-nonnull.ts b/tests/compiler/std/string-nonnull.ts new file mode 100644 index 0000000000..930066cee7 --- /dev/null +++ b/tests/compiler/std/string-nonnull.ts @@ -0,0 +1,13 @@ +{ + let s: string | null = ""; + + // should derive that s is non-null in then + if (s != null) s.length; + if (s !== null) s.length; + if (s) s.length; + + // should derive that s is non-null in else + if (s == null) {} else s.length; + if (s === null) {} else s.length; + if (!s) {} else s.length; +} diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.debug.wat similarity index 95% rename from tests/compiler/std/string.untouched.wat rename to tests/compiler/std/string.debug.wat index 0f8eecf07f..ff6e71e2ad 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.debug.wat @@ -3,9 +3,9 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) @@ -28,7 +28,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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,7 +39,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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)) @@ -52,7 +52,7 @@ (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) (global $std/string/Ox1p_1073 f64 (f64.const 1e-323)) (global $std/string/Ox1_0000000000001p_1022 f64 (f64.const 2.225073858507202e-308)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) @@ -2786,237 +2786,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -3066,7 +2835,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) @@ -3087,1310 +2856,57 @@ local.get $1 local.get $2 i32.ge_u - if - i32.const 240 - i32.const 304 - i32.const 57 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - ) - (func $~lib/string/String.__not (param $0 i32) (result i32) - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/string/String#get:length - i32.eqz - end - ) - (func $~lib/string/String.fromCharCode@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 - i32.const -1 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/string/String.fromCharCode - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + if + i32.const 240 + i32.const 304 + i32.const 57 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $2 + i32.const 2 i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $3 + ) + (func $~lib/string/String.__not (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.eq + if (result i32) i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + else + local.get $0 + call $~lib/string/String#get:length + i32.eqz end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + (func $~lib/string/String.fromCharCode@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 + i32.const -1 + local.set $1 end + local.get $0 + local.get $1 + call $~lib/string/String.fromCharCode ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4403,7 +2919,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) @@ -4669,7 +3185,7 @@ i32.add local.get $1 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $2 i32.add @@ -6830,7 +5346,7 @@ f64.convert_i64_u f64.mul f64.nearest - i64.trunc_f64_u + i64.trunc_sat_f64_u i64.add local.set $19 local.get $20 @@ -6876,7 +5392,7 @@ local.get $23 f64.convert_i64_u f64.div - i64.trunc_f64_u + i64.trunc_sat_f64_u i64.add local.set $19 local.get $20 @@ -7239,7 +5755,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) @@ -8595,7 +7111,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -8632,7 +7148,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -8739,7 +7255,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -8953,7 +7469,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -9470,14 +7986,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill local.get $2 i32.eqz if @@ -9701,7 +8212,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $10 local.get $7 call $~lib/array/Array<~lib/string/String>#push @@ -9781,7 +8292,7 @@ local.get $14 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $10 local.get $4 call $~lib/array/Array<~lib/string/String>#push @@ -9817,23 +8328,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill global.get $std/string/str i32.const 32 i32.eq @@ -25535,19 +24032,19 @@ i32.add local.get $2 local.get $10 - call $~lib/memory/memory.copy + memory.copy else local.get $7 local.get $2 local.get $6 - call $~lib/memory/memory.copy + memory.copy end local.get $7 local.get $6 i32.add local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $11 global.get $~lib/memory/__stack_pointer @@ -25620,7 +24117,7 @@ local.get $7 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $6 local.get $5 i32.gt_u @@ -25653,14 +24150,14 @@ i32.add local.get $2 local.get $10 - call $~lib/memory/memory.copy + memory.copy else local.get $7 local.get $3 i32.add local.get $2 local.get $6 - call $~lib/memory/memory.copy + memory.copy end local.get $7 local.set $11 @@ -25753,7 +24250,7 @@ local.get $2 i32.add local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.set $5 global.get $~lib/memory/__stack_pointer @@ -25840,7 +24337,7 @@ local.get $4 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.set $5 global.get $~lib/memory/__stack_pointer @@ -25967,7 +24464,7 @@ local.get $4 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer @@ -26026,13 +24523,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer @@ -26219,7 +24716,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.const 1 @@ -26229,7 +24726,7 @@ local.get $6 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 local.get $6 @@ -26249,7 +24746,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.set $9 global.get $~lib/memory/__stack_pointer @@ -26359,7 +24856,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $7 i32.const 0 @@ -26397,7 +24894,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 local.get $5 i32.add @@ -26439,7 +24936,7 @@ local.get $6 local.get $0 local.get $7 - call $~lib/memory/memory.copy + memory.copy loop $while-continue|1 local.get $0 local.get $1 @@ -26460,7 +24957,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $12 local.get $4 i32.add @@ -26544,7 +25041,7 @@ local.get $7 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $14 local.get $7 i32.add @@ -26558,7 +25055,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $14 local.get $5 i32.add @@ -26610,7 +25107,7 @@ local.get $6 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end local.get $6 local.get $14 @@ -26747,7 +25244,7 @@ local.get $3 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $6 local.set $7 global.get $~lib/memory/__stack_pointer @@ -26842,7 +25339,7 @@ i32.shl i32.add local.get $8 - call $~lib/memory/memory.copy + memory.copy local.get $9 local.set $10 global.get $~lib/memory/__stack_pointer @@ -26975,7 +25472,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer @@ -27805,7 +26302,7 @@ local.get $2 i32.const 21840 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.release.wat similarity index 84% rename from tests/compiler/std/string.optimized.wat rename to tests/compiler/std/string.release.wat index 2656b9f5fd..e208eab2ac 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.release.wat @@ -2,14 +2,14 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $none_=>_i64 (func (result i64))) @@ -40,905 +40,458 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 42268)) (memory $0 1) - (data (i32.const 1036) "<") - (data (i32.const 1048) "\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 1100) ",") - (data (i32.const 1112) "\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1148) "\1c") - (data (i32.const 1160) "\01\00\00\00\02\00\00\00\df") - (data (i32.const 1180) "\1c") - (data (i32.const 1192) "\01\00\00\00\04\00\00\00\df\00\df") - (data (i32.const 1212) "\1c") - (data (i32.const 1224) "\01\00\00\00\06\00\00\00\df\00a\00b") - (data (i32.const 1244) "<") - (data (i32.const 1256) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1308) ",") - (data (i32.const 1320) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1356) "<") - (data (i32.const 1368) "\01\00\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 (i32.const 1420) "<") - (data (i32.const 1432) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1548) ",") - (data (i32.const 1560) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1628) "<") - (data (i32.const 1640) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1692) "\1c") - (data (i32.const 1704) "\01") - (data (i32.const 1724) "\1c") - (data (i32.const 1736) "\01\00\00\00\02\00\00\00h") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\02") - (data (i32.const 1788) "\1c") - (data (i32.const 1800) "\01\00\00\00\02\00\00\00a") - (data (i32.const 1820) "\1c") - (data (i32.const 1832) "\01\00\00\00\02\00\00\00@") - (data (i32.const 1852) "\1c") - (data (i32.const 1864) "\01\00\00\00\02\00\00\006") - (data (i32.const 1884) "\1c") - (data (i32.const 1896) "\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 1916) "\1c") - (data (i32.const 1932) "\08\00\00\00\00\00\00\006") - (data (i32.const 1948) "\1c") - (data (i32.const 1960) "\01\00\00\00\04\00\00\00\00\006") - (data (i32.const 1980) "\1c") - (data (i32.const 1996) "\0c\00\00\00A\00\00\00B\00\00\00C") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\06\00\00\00A\00B\00C") - (data (i32.const 2044) ",") - (data (i32.const 2060) "\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df") - (data (i32.const 2092) "\1c") - (data (i32.const 2104) "\01\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df") - (data (i32.const 2124) "\1c") - (data (i32.const 2136) "\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 2156) "\1c") - (data (i32.const 2168) "\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 2188) "\1c") - (data (i32.const 2200) "\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 2220) "\1c") - (data (i32.const 2232) "\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 2252) "\1c") - (data (i32.const 2264) "\01\00\00\00\02\00\00\00 ") - (data (i32.const 2284) "\1c") - (data (i32.const 2296) "\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 2316) "\1c") - (data (i32.const 2328) "\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 2348) "\1c") - (data (i32.const 2360) "\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 2380) "\1c") - (data (i32.const 2392) "\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 2412) "\1c") - (data (i32.const 2424) "\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 2444) ",") - (data (i32.const 2456) "\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 2492) "\1c") - (data (i32.const 2504) "\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 2524) "\1c") - (data (i32.const 2536) "\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 2556) ",") - (data (i32.const 2568) "\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 2604) "\1c") - (data (i32.const 2616) "\01\00\00\00\02\00\00\00,") - (data (i32.const 2636) "\1c") - (data (i32.const 2648) "\01\00\00\00\02\00\00\00x") - (data (i32.const 2668) "\1c") - (data (i32.const 2680) "\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 2700) "\1c") - (data (i32.const 2712) "\01\00\00\00\02\00\00\00g") - (data (i32.const 2732) "\1c") - (data (i32.const 2744) "\01\00\00\00\02\00\00\00i") - (data (i32.const 2764) "\1c") - (data (i32.const 2776) "\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 2796) "\1c") - (data (i32.const 2808) "\01\00\00\00\06\00\00\00a\00b\00d") - (data (i32.const 2828) "\1c") - (data (i32.const 2840) "\01\00\00\00\08\00\00\00a\00b\00c\00d") - (data (i32.const 2860) "\1c") - (data (i32.const 2872) "\01\00\00\00\08\00\00\00a\00b\00 \00c") - (data (i32.const 2892) ",") - (data (i32.const 2904) "\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2940) ",") - (data (i32.const 2952) "\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2988) ",") - (data (i32.const 3000) "\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c") - (data (i32.const 3036) "\1c") - (data (i32.const 3048) "\01\00\00\00\02\00\00\000") - (data (i32.const 3068) "\1c") - (data (i32.const 3080) "\01\00\00\00\06\00\00\000\000\000") - (data (i32.const 3100) "\1c") - (data (i32.const 3112) "\01\00\00\00\02\00\00\001") - (data (i32.const 3132) "\1c") - (data (i32.const 3144) "\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 3164) "\1c") - (data (i32.const 3176) "\01\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 3196) "\1c") - (data (i32.const 3208) "\01\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 3228) "\1c") - (data (i32.const 3240) "\01\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 3260) "\1c") - (data (i32.const 3272) "\01\00\00\00\n\00\00\000\00X\00F\000\00F") - (data (i32.const 3292) "\1c") - (data (i32.const 3304) "\01\00\00\00\06\00\00\000\001\001") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\01\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 3356) "\1c") - (data (i32.const 3368) "\01\00\00\00\08\00\00\00-\001\002\003") - (data (i32.const 3388) "\1c") - (data (i32.const 3400) "\01\00\00\00\08\00\00\00+\001\002\003") - (data (i32.const 3420) "\1c") - (data (i32.const 3432) "\01\00\00\00\n\00\00\00-\001\002\00.\003") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\01\00\00\00\06\00\00\000\00x\000") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\01\00\00\00\08\00\00\000\00b\001\001") - (data (i32.const 3516) "\1c") - (data (i32.const 3528) "\01\00\00\00\04\00\00\00\n\001") - (data (i32.const 3548) "\1c") - (data (i32.const 3560) "\01\00\00\00\04\00\00\00( 1") - (data (i32.const 3580) "\1c") - (data (i32.const 3592) "\01\00\00\00\04\00\00\00) 1") - (data (i32.const 3612) "\1c") - (data (i32.const 3624) "\01\00\00\00\04\00\00\00-\000") - (data (i32.const 3644) ",") - (data (i32.const 3656) "\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") - (data (i32.const 3692) "\1c") - (data (i32.const 3704) "\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") - (data (i32.const 3724) "<") - (data (i32.const 3736) "\01\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 (i32.const 3788) "L") - (data (i32.const 3800) "\01\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 (i32.const 3868) "<") - (data (i32.const 3880) "\01\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 (i32.const 3932) "\1c") - (data (i32.const 3944) "\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 3964) ",") - (data (i32.const 3976) "\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") - (data (i32.const 4012) "\1c") - (data (i32.const 4024) "\01\00\00\00\08\00\00\00 \00\t\00\n\001") - (data (i32.const 4044) ",") - (data (i32.const 4056) "\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") - (data (i32.const 4092) "\1c") - (data (i32.const 4104) "\01\00\00\00\02\00\00\00-") - (data (i32.const 4124) "\1c") - (data (i32.const 4136) "\01\00\00\00\02\00\00\00+") - (data (i32.const 4156) "\1c") - (data (i32.const 4168) "\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 4188) "\1c") - (data (i32.const 4200) "\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") - (data (i32.const 4220) ",") - (data (i32.const 4232) "\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") - (data (i32.const 4268) "<") - (data (i32.const 4280) "\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") + (data (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") + (data (i32.const 1100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df") + (data (i32.const 1180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\df\00\df") + (data (i32.const 1212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b") + (data (i32.const 1244) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1356) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1420) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1548) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1628) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 1724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h") + (data (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1820) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00@") + (data (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006") + (data (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") + (data (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\006") + (data (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\006") + (data (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C") + (data (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00B\00C") + (data (i32.const 2044) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df") + (data (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df") + (data (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") + (data (i32.const 2156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i") + (data (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") + (data (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00 ") + (data (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") + (data (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data (i32.const 2444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data (i32.const 2556) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00x") + (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") + (data (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00g") + (data (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00i") + (data (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") + (data (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") + (data (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") + (data (i32.const 2892) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 ") + (data (i32.const 2940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 ") + (data (i32.const 2988) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c") + (data (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\000") + (data (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001") + (data (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001") + (data (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007") + (data (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f") + (data (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F") + (data (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\001\001") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\001\002\003") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\001\002\003") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\000") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00b\001\001") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\n\001") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00( 1") + (data (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00) 1") + (data (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\000") + (data (i32.const 3644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") + (data (i32.const 3724) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3788) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3868) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") + (data (i32.const 3964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") + (data (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001") + (data (i32.const 4044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") + (data (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") + (data (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") + (data (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") + (data (i32.const 4220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") + (data (i32.const 4268) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") (data (i32.const 4342) "\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 (i32.const 4524) "\1c") - (data (i32.const 4536) "\01\00\00\00\04\00\00\001\00.") - (data (i32.const 4556) "\1c") - (data (i32.const 4568) "\01\00\00\00\08\00\00\001\00.\000\000") - (data (i32.const 4588) "\1c") - (data (i32.const 4600) "\01\00\00\00\08\00\00\001\00e\00-\005") - (data (i32.const 4620) "\1c") - (data (i32.const 4632) "\01\00\00\00\n\00\00\00-\001\00e\00-\005") - (data (i32.const 4652) ",") - (data (i32.const 4664) "\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") - (data (i32.const 4700) ",") - (data (i32.const 4712) "\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") - (data (i32.const 4748) "\1c") - (data (i32.const 4760) "\01\00\00\00\08\00\00\001\00e\00-\001") - (data (i32.const 4780) "\1c") - (data (i32.const 4792) "\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000") - (data (i32.const 4812) "\1c") - (data (i32.const 4824) "\01\00\00\00\06\00\00\000\00.\001") - (data (i32.const 4844) "\1c") - (data (i32.const 4856) "\01\00\00\00\06\00\00\00.\002\005") - (data (i32.const 4876) "\1c") - (data (i32.const 4888) "\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") - (data (i32.const 4908) ",") - (data (i32.const 4920) "\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") - (data (i32.const 4956) ",") - (data (i32.const 4968) "\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") - (data (i32.const 5004) ",") - (data (i32.const 5016) "\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") - (data (i32.const 5052) ",") - (data (i32.const 5064) "\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") - (data (i32.const 5100) "\1c") - (data (i32.const 5112) "\01\00\00\00\0c\00\00\001\00e\00+\003\000\008") - (data (i32.const 5132) "\1c") - (data (i32.const 5144) "\01\00\00\00\0c\00\00\001\00e\00+\003\000\009") - (data (i32.const 5164) ",") - (data (i32.const 5176) "\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") - (data (i32.const 5212) ",") - (data (i32.const 5224) "\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") - (data (i32.const 5260) ",") - (data (i32.const 5272) "\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") - (data (i32.const 5308) "\1c") - (data (i32.const 5320) "\01\00\00\00\06\00\00\001\00_\000") - (data (i32.const 5340) "\1c") - (data (i32.const 5352) "\01\00\00\00\06\00\00\001\00_\001") - (data (i32.const 5372) ",") - (data (i32.const 5384) "\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") - (data (i32.const 5420) ",") - (data (i32.const 5432) "\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") - (data (i32.const 5468) ",") - (data (i32.const 5480) "\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") - (data (i32.const 5516) "\1c") - (data (i32.const 5528) "\01\00\00\00\n\00\00\001\00e\00-\006\000") - (data (i32.const 5548) "\1c") - (data (i32.const 5560) "\01\00\00\00\08\00\00\001\00e\006\000") - (data (i32.const 5580) "\1c") - (data (i32.const 5592) "\01\00\00\00\0c\00\00\001\002\003\00.\004\00e") - (data (i32.const 5612) ",") - (data (i32.const 5624) "\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") - (data (i32.const 5660) "\1c") - (data (i32.const 5672) "\01\00\00\00\04\00\00\001\00x") - (data (i32.const 5692) ",") - (data (i32.const 5704) "\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 5740) ",") - (data (i32.const 5752) "\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 5788) ",") - (data (i32.const 5800) "\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") - (data (i32.const 5836) ",") - (data (i32.const 5848) "\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") - (data (i32.const 5884) "\1c") - (data (i32.const 5896) "\01\00\00\00\n\00\00\001\001\00.\00s\001") - (data (i32.const 5916) "\1c") - (data (i32.const 5928) "\01\00\00\00\06\00\00\000\00x\005") - (data (i32.const 5948) "\1c") - (data (i32.const 5960) "\01\00\00\00\06\00\00\000\00x\00D") - (data (i32.const 5980) "\1c") - (data (i32.const 5992) "\01\00\00\00\08\00\00\00\0b\001\00.\001") - (data (i32.const 6012) "\1c") - (data (i32.const 6024) "\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") - (data (i32.const 6044) "\1c") - (data (i32.const 6056) "\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") - (data (i32.const 6076) "\1c") - (data (i32.const 6088) "\01\00\00\00\0c\00\00\00( ( -\001\00.\001") - (data (i32.const 6108) "\1c") - (data (i32.const 6120) "\01\00\00\00\0c\00\00\00) ) -\001\00.\001") - (data (i32.const 6140) "\1c") - (data (i32.const 6152) "\01\00\00\00\n\00\00\000\000\000\000\000") - (data (i32.const 6172) "\1c") - (data (i32.const 6184) "\01\00\00\00\n\00\00\000\000\000\000\00a") - (data (i32.const 6204) "\1c") - (data (i32.const 6216) "\01\00\00\00\n\00\00\000\000\000\000\001") - (data (i32.const 6236) "\1c") - (data (i32.const 6248) "\01\00\00\00\n\00\00\000\000\00.\000\000") - (data (i32.const 6268) "\1c") - (data (i32.const 6280) "\01\00\00\00\n\00\00\000\000\00.\000\00a") - (data (i32.const 6300) "\1c") - (data (i32.const 6312) "\01\00\00\00\08\00\00\001\00e\001\00e") - (data (i32.const 6332) ",") - (data (i32.const 6344) "\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") - (data (i32.const 6380) "\1c") - (data (i32.const 6392) "\01\00\00\00\0c\00\00\000\00e\00+\001\000\000") - (data (i32.const 6412) "\1c") - (data (i32.const 6424) "\01\00\00\00\n\00\00\001\00.\00-\001\00.") - (data (i32.const 6444) "\1c") - (data (i32.const 6456) "\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002") - (data (i32.const 6476) "\1c") - (data (i32.const 6488) "\01\00\00\00\06\00\00\001\00e\00x") - (data (i32.const 6508) "\1c") - (data (i32.const 6520) "\01\00\00\00\08\00\00\001\00e\001\00x") - (data (i32.const 6540) "\1c") - (data (i32.const 6552) "\01\00\00\00\08\00\00\001\00e\00-\00x") - (data (i32.const 6572) "\1c") - (data (i32.const 6584) "\01\00\00\00\n\00\00\001\00e\00-\001\00x") - (data (i32.const 6604) ",") - (data (i32.const 6616) "\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") - (data (i32.const 6652) "\1c") - (data (i32.const 6664) "\01\00\00\00\06\00\00\000\000\00.") - (data (i32.const 6684) "\1c") - (data (i32.const 6696) "\01\00\00\00\06\00\00\00.\000\000") - (data (i32.const 6716) "\1c") - (data (i32.const 6728) "\01\00\00\00\06\00\00\00.\000\00.") - (data (i32.const 6748) "\1c") - (data (i32.const 6760) "\01\00\00\00\06\00\00\00.\001\00.") - (data (i32.const 6780) "\1c") - (data (i32.const 6792) "\01\00\00\00\06\00\00\000\00.\00.") - (data (i32.const 6812) "\1c") - (data (i32.const 6824) "\01\00\00\00\06\00\00\000\00.\00a") - (data (i32.const 6844) "\1c") - (data (i32.const 6856) "\01\00\00\00\08\00\00\001\00.\00.\001") - (data (i32.const 6876) "\1c") - (data (i32.const 6888) "\01\00\00\00\n\00\00\000\00.\001\00.\001") - (data (i32.const 6908) "\1c") - (data (i32.const 6920) "\01\00\00\00\08\00\00\000\00.\00 \001") - (data (i32.const 6940) "\1c") - (data (i32.const 6952) "\01\00\00\00\08\00\00\00+\000\00.\000") - (data (i32.const 6972) "\1c") - (data (i32.const 6984) "\01\00\00\00\08\00\00\00-\000\00.\000") - (data (i32.const 7004) "\1c") - (data (i32.const 7016) "\01\00\00\00\04\00\00\00+\000") - (data (i32.const 7036) "\1c") - (data (i32.const 7048) "\01\00\00\00\06\00\00\00-\00-\000") - (data (i32.const 7068) "\1c") - (data (i32.const 7080) "\01\00\00\00\06\00\00\00+\00+\000") - (data (i32.const 7100) "\1c") - (data (i32.const 7112) "\01\00\00\00\04\00\00\00.\00a") - (data (i32.const 7132) "\1c") - (data (i32.const 7144) "\01\00\00\00\06\00\00\00.\00.\000") - (data (i32.const 7164) "\1c") - (data (i32.const 7176) "\01\00\00\00\02\00\00\00.") - (data (i32.const 7196) "\1c") - (data (i32.const 7208) "\01\00\00\00\04\00\00\00.\00.") - (data (i32.const 7228) "\1c") - (data (i32.const 7240) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 7260) "\1c") - (data (i32.const 7272) "\01\00\00\00\02\00\00\00\0b") - (data (i32.const 7292) "\1c") - (data (i32.const 7304) "\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 7324) "\1c") - (data (i32.const 7336) "\01\00\00\00\08\00\00\00\0e\181\00.\001") - (data (i32.const 7356) "\1c") - (data (i32.const 7368) "\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") - (data (i32.const 7388) "\1c") - (data (i32.const 7400) "\01\00\00\00\02\00\00\00\0c") - (data (i32.const 7420) "\1c") - (data (i32.const 7432) "\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 7452) "\1c") - (data (i32.const 7464) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 7484) "\1c") - (data (i32.const 7496) "\01\00\00\00\08\00\00\001\00e\002\002") - (data (i32.const 7516) "\1c") - (data (i32.const 7528) "\01\00\00\00\n\00\00\001\00e\00-\002\002") - (data (i32.const 7548) "\1c") - (data (i32.const 7560) "\01\00\00\00\08\00\00\001\00e\002\003") - (data (i32.const 7580) "\1c") - (data (i32.const 7592) "\01\00\00\00\n\00\00\001\00e\00-\002\003") - (data (i32.const 7612) "\1c") - (data (i32.const 7624) "\01\00\00\00\08\00\00\001\00e\003\007") - (data (i32.const 7644) "\1c") - (data (i32.const 7656) "\01\00\00\00\n\00\00\001\00e\00-\003\007") - (data (i32.const 7676) "\1c") - (data (i32.const 7688) "\01\00\00\00\08\00\00\001\00e\003\008") - (data (i32.const 7708) "\1c") - (data (i32.const 7720) "\01\00\00\00\n\00\00\001\00e\00-\003\008") - (data (i32.const 7740) "<") - (data (i32.const 7752) "\01\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 (i32.const 7804) "L") - (data (i32.const 7816) "\01\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 (i32.const 7884) "\1c") - (data (i32.const 7896) "\01\00\00\00\0c\00\00\005\00e\00-\003\002\004") - (data (i32.const 7916) ",") - (data (i32.const 7928) "\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") - (data (i32.const 7964) "\8c") - (data (i32.const 7976) "\01\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 (i32.const 8108) ",") - (data (i32.const 8120) "\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") - (data (i32.const 8156) ",") - (data (i32.const 8168) "\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") - (data (i32.const 8204) ",") - (data (i32.const 8216) "\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") - (data (i32.const 8252) ",") - (data (i32.const 8264) "\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") - (data (i32.const 8300) ",") - (data (i32.const 8312) "\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") - (data (i32.const 8348) ",") - (data (i32.const 8360) "\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") - (data (i32.const 8396) "\1c") - (data (i32.const 8408) "\01\00\00\00\0c\00\00\001\00.\00e\003\006\000") - (data (i32.const 8428) ",") - (data (i32.const 8440) "\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8476) ",") - (data (i32.const 8488) "\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8524) ",") - (data (i32.const 8536) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8572) ",") - (data (i32.const 8584) "\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") - (data (i32.const 8620) ",") - (data (i32.const 8632) "\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") - (data (i32.const 8668) "\1c") - (data (i32.const 8680) "\01\00\00\00\08\00\00\00I\00n\00f\00i") - (data (i32.const 8700) ",") - (data (i32.const 8712) "\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") - (data (i32.const 8748) ",") - (data (i32.const 8760) "\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8796) "\bc") - (data (i32.const 8808) "\01\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 (i32.const 8988) "\bc") - (data (i32.const 9000) "\01\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 (i32.const 9180) "\bc") - (data (i32.const 9192) "\01\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 (i32.const 9372) "\9c") - (data (i32.const 9384) "\01\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 (i32.const 9532) "\9c") - (data (i32.const 9544) "\01\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 (i32.const 9692) "\9c") - (data (i32.const 9704) "\01\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 (i32.const 9852) "\9c") - (data (i32.const 9864) "\01\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 (i32.const 10012) "\9c") - (data (i32.const 10024) "\01\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 (i32.const 10172) "l") - (data (i32.const 10184) "\01\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 (i32.const 10284) "l") - (data (i32.const 10296) "\01\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 (i32.const 10396) "l") - (data (i32.const 10408) "\01\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 (i32.const 10508) "l") - (data (i32.const 10520) "\01\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 (i32.const 10620) "l") - (data (i32.const 10632) "\01\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 (i32.const 10732) "l") - (data (i32.const 10744) "\01\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 (i32.const 10844) "l") - (data (i32.const 10856) "\01\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 (i32.const 10956) "l") - (data (i32.const 10968) "\01\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 (i32.const 11068) "l") - (data (i32.const 11080) "\01\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 (i32.const 11180) "l") - (data (i32.const 11192) "\01\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 (i32.const 11292) "l") - (data (i32.const 11304) "\01\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 (i32.const 11404) "l") - (data (i32.const 11416) "\01\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 (i32.const 11516) "l") - (data (i32.const 11528) "\01\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 (i32.const 11628) "l") - (data (i32.const 11640) "\01\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 (i32.const 11740) "l") - (data (i32.const 11752) "\01\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 (i32.const 11852) "l") - (data (i32.const 11864) "\01\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 (i32.const 11964) "l") - (data (i32.const 11976) "\01\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 (i32.const 12076) "l") - (data (i32.const 12088) "\01\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 (i32.const 12188) "l") - (data (i32.const 12200) "\01\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 (i32.const 12300) "l") - (data (i32.const 12312) "\01\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 (i32.const 12412) "l") - (data (i32.const 12424) "\01\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 (i32.const 12524) "l") - (data (i32.const 12536) "\01\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 (i32.const 12636) "l") - (data (i32.const 12648) "\01\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 (i32.const 12748) "l") - (data (i32.const 12760) "\01\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 (i32.const 12860) "\1c") - (data (i32.const 12872) "\01\00\00\00\06\00\00\00 \00\t\00\n") - (data (i32.const 12892) "\1c") - (data (i32.const 12904) "\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001") - (data (i32.const 12924) "\1c") - (data (i32.const 12936) "\01\00\00\00\02\00\00\00b") - (data (i32.const 12956) "\1c") - (data (i32.const 12968) "\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 12988) "\1c") - (data (i32.const 13000) "\01\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 13020) "\1c") - (data (i32.const 13032) "\01\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 13052) "\1c") - (data (i32.const 13064) "\01\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 13084) "\1c") - (data (i32.const 13096) "\01\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 13116) "\1c") - (data (i32.const 13128) "\01\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 13148) "\1c") - (data (i32.const 13160) "\01\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 13180) ",") - (data (i32.const 13192) "\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 13228) ",") - (data (i32.const 13240) "\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 13276) ",") - (data (i32.const 13288) "\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data (i32.const 13324) ",") - (data (i32.const 13336) "\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data (i32.const 13372) "\1c") - (data (i32.const 13384) "\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 13404) "\1c") - (data (i32.const 13416) "\01\00\00\00\04\00\00\00a\00a") - (data (i32.const 13436) "\1c") - (data (i32.const 13448) "\01\00\00\00\04\00\00\001\000") - (data (i32.const 13468) "\1c") - (data (i32.const 13480) "\01\00\00\00\04\00\00\001\001") - (data (i32.const 13500) "\1c") - (data (i32.const 13512) "\01\00\00\00\06\00\00\001\000\001") - (data (i32.const 13532) "\1c") - (data (i32.const 13544) "\01\00\00\00\06\00\00\001\002\002") - (data (i32.const 13564) "\1c") - (data (i32.const 13576) "\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 13596) "\1c") - (data (i32.const 13608) "\01\00\00\00\08\00\00\001\002\003\003") - (data (i32.const 13628) ",") - (data (i32.const 13640) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 13676) "\1c") - (data (i32.const 13688) "\01\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 13708) ",") - (data (i32.const 13720) "\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 13756) "\1c") - (data (i32.const 13768) "\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 13788) "\1c") - (data (i32.const 13800) "\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 13820) ",") - (data (i32.const 13832) "\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 13868) "\1c") - (data (i32.const 13880) "\01\00\00\00\n\00\00\00a\00-\00b\00-\00c") - (data (i32.const 13900) "\1c") - (data (i32.const 13912) "\01\00\00\00\n\00\00\00a\00+\00b\00-\00c") - (data (i32.const 13932) "\1c") - (data (i32.const 13944) "\01\00\00\00\08\00\00\00+\00a\00b\00c") - (data (i32.const 13964) "\1c") - (data (i32.const 13976) "\01\00\00\00\08\00\00\00\n\00a\00b\00c") - (data (i32.const 13996) "\1c") - (data (i32.const 14008) "\01\00\00\00\02\00\00\00\n") - (data (i32.const 14028) "\1c") - (data (i32.const 14040) "\01\00\00\00\02\00\00\00c") - (data (i32.const 14060) "\1c") - (data (i32.const 14072) "\01\00\00\00\04\00\00\00+\00+") - (data (i32.const 14092) "\1c") - (data (i32.const 14104) "\01\00\00\00\08\00\00\00a\00b\00+\00+") - (data (i32.const 14124) ",") - (data (i32.const 14136) "\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") - (data (i32.const 14172) "\1c") - (data (i32.const 14184) "\01\00\00\00\06\00\00\00+\00+\00+") - (data (i32.const 14204) ",") - (data (i32.const 14216) "\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") - (data (i32.const 14252) ",") - (data (i32.const 14264) "\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") - (data (i32.const 14300) "\1c") - (data (i32.const 14312) "\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") - (data (i32.const 14332) "\1c") - (data (i32.const 14344) "\01\00\00\00\08\00\00\00c\00c\00c\00c") - (data (i32.const 14364) "\1c") - (data (i32.const 14376) "\01\00\00\00\04\00\00\00c\00c") - (data (i32.const 14396) "\1c") - (data (i32.const 14408) "\01\00\00\00\08\00\00\00+\00+\00+\00+") - (data (i32.const 14428) "\1c") - (data (i32.const 14440) "\01\00\00\00\02\00\00\00e") - (data (i32.const 14460) "\1c") - (data (i32.const 14472) "\01\00\00\00\04\00\00\00b\00c") - (data (i32.const 14492) "\1c") - (data (i32.const 14504) "\01\00\00\00\04\00\00\00a\00+") - (data (i32.const 14524) "\1c") - (data (i32.const 14536) "\01\00\00\00\n\00\00\00a\00+\00b\00+\00c") - (data (i32.const 14556) ",") - (data (i32.const 14568) "\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") - (data (i32.const 14604) "\1c") - (data (i32.const 14616) "\01\00\00\00\n\00\00\00a\00b\00c\00d\00e") - (data (i32.const 14636) "\1c") - (data (i32.const 14648) "\01\00\00\00\06\00\00\00-\00-\00-") - (data (i32.const 14668) ",") - (data (i32.const 14680) "\01\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") - (data (i32.const 14716) "\1c") - (data (i32.const 14728) "\01\00\00\00\n\00\00\00-\00-\00-\00-\00-") - (data (i32.const 14748) "\1c") - (data (i32.const 14760) "\01\00\00\00\08\00\00\00-\00-\00-\00-") - (data (i32.const 14780) ",") - (data (i32.const 14792) "\01\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-") - (data (i32.const 14828) "\1c") - (data (i32.const 14840) "\01\00\00\00\08\00\00\00-\00-\00-\00a") - (data (i32.const 14860) ",") - (data (i32.const 14872) "\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 14908) "\1c") - (data (i32.const 14920) "\01\00\00\00\02\00\00\00n") - (data (i32.const 14940) "\1c") - (data (i32.const 14952) "\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 14972) "\1c") - (data (i32.const 14984) "\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 15004) "\1c") - (data (i32.const 15016) "\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 15036) ",") - (data (i32.const 15048) "\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 15084) ",") - (data (i32.const 15096) "\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") - (data (i32.const 15132) "\1c") - (data (i32.const 15144) "\01\00\00\00\06\00\00\00e\00f\00g") - (data (i32.const 15164) "\1c") - (data (i32.const 15176) "\01\00\00\00\08\00\00\00e\00f\00g\00h") - (data (i32.const 15196) "\1c") - (data (i32.const 15208) "\01\00\00\00\02\00\00\00d") - (data (i32.const 15228) ",") - (data (i32.const 15240) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 15276) "|") - (data (i32.const 15288) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 15404) "\1c") - (data (i32.const 15416) "\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 15436) ",") - (data (i32.const 15448) "\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 15484) "\1c") - (data (i32.const 15496) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 15516) "\1c") - (data (i32.const 15528) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 15548) "\1c") - (data (i32.const 15560) "\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 15580) "\1c") - (data (i32.const 15592) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 15612) "|") - (data (i32.const 15624) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 15740) "<") - (data (i32.const 15752) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00.") + (data (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\000\000") + (data (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005") + (data (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005") + (data (i32.const 4652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") + (data (i32.const 4700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") + (data (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001") + (data (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000") + (data (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\001") + (data (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\002\005") + (data (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") + (data (i32.const 4908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") + (data (i32.const 4956) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") + (data (i32.const 5004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") + (data (i32.const 5052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") + (data (i32.const 5100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008") + (data (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009") + (data (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") + (data (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") + (data (i32.const 5260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") + (data (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\000") + (data (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\001") + (data (i32.const 5372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") + (data (i32.const 5420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") + (data (i32.const 5468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") + (data (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000") + (data (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\006\000") + (data (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00.\004\00e") + (data (i32.const 5612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") + (data (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00x") + (data (i32.const 5692) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") + (data (i32.const 5740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") + (data (i32.const 5788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") + (data (i32.const 5836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") + (data (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001") + (data (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\005") + (data (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\00D") + (data (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001") + (data (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") + (data (i32.const 6044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") + (data (i32.const 6076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001") + (data (i32.const 6108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001") + (data (i32.const 6140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000") + (data (i32.const 6172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a") + (data (i32.const 6204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001") + (data (i32.const 6236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000") + (data (i32.const 6268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a") + (data (i32.const 6300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e") + (data (i32.const 6332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") + (data (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000") + (data (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.") + (data (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002") + (data (i32.const 6476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00e\00x") + (data (i32.const 6508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x") + (data (i32.const 6540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x") + (data (i32.const 6572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x") + (data (i32.const 6604) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") + (data (i32.const 6652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\00.") + (data (i32.const 6684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\000") + (data (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\00.") + (data (i32.const 6748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\001\00.") + (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00.") + (data (i32.const 6812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00a") + (data (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001") + (data (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001") + (data (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001") + (data (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000") + (data (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000") + (data (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\000") + (data (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\000") + (data (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\000") + (data (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00a") + (data (i32.const 7132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\00.\000") + (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00.") + (data (i32.const 7196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00.") + (data (i32.const 7228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 7260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0b") + (data (i32.const 7292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0e\18") + (data (i32.const 7324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001") + (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") + (data (i32.const 7388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0c") + (data (i32.const 7420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\002") + (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002") + (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\003") + (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003") + (data (i32.const 7612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\007") + (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007") + (data (i32.const 7676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\008") + (data (i32.const 7708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008") + (data (i32.const 7740) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 7804) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 7884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004") + (data (i32.const 7916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") + (data (i32.const 7964) "\8c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 8108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") + (data (i32.const 8156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") + (data (i32.const 8204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") + (data (i32.const 8252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") + (data (i32.const 8300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") + (data (i32.const 8348) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") + (data (i32.const 8396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000") + (data (i32.const 8428) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 8476) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 8524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 8572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") + (data (i32.const 8620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") + (data (i32.const 8668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i") + (data (i32.const 8700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") + (data (i32.const 8748) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 8796) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 8988) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 9180) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 9372) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 9532) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 9692) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 9852) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10012) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10172) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10284) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10396) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10508) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10620) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10732) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10844) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 10956) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11068) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11180) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11292) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11404) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11516) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11628) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11740) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11852) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 11964) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12076) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12188) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12300) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12412) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12524) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12636) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12748) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 12860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n") + (data (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001") + (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001") + (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002") + (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\001") + (data (i32.const 13084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\002") + (data (i32.const 13116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002") + (data (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001") + (data (i32.const 13180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") + (data (i32.const 13228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") + (data (i32.const 13276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") + (data (i32.const 13324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") + (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 13404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00a") + (data (i32.const 13436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\000") + (data (i32.const 13468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001") + (data (i32.const 13500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\000\001") + (data (i32.const 13532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\002") + (data (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004") + (data (i32.const 13596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\003") + (data (i32.const 13628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 13676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00a\00a") + (data (i32.const 13708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") + (data (i32.const 13756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") + (data (i32.const 13788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") + (data (i32.const 13820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") + (data (i32.const 13868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c") + (data (i32.const 13900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c") + (data (i32.const 13932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c") + (data (i32.const 13964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c") + (data (i32.const 13996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n") + (data (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c") + (data (i32.const 14060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\00+") + (data (i32.const 14092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+") + (data (i32.const 14124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") + (data (i32.const 14172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00+") + (data (i32.const 14204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") + (data (i32.const 14252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") + (data (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") + (data (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c") + (data (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c") + (data (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+") + (data (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00e") + (data (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00c") + (data (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00+") + (data (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c") + (data (i32.const 14556) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") + (data (i32.const 14604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00d\00e") + (data (i32.const 14636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00-") + (data (i32.const 14668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") + (data (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\00-\00-\00-\00-") + (data (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00-") + (data (i32.const 14780) ",\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-\00-\00-\00-\00-\00-") + (data (i32.const 14828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00a") + (data (i32.const 14860) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") + (data (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00n") + (data (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") + (data (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") + (data (i32.const 15004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") + (data (i32.const 15036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") + (data (i32.const 15084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") + (data (i32.const 15132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00e\00f\00g") + (data (i32.const 15164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h") + (data (i32.const 15196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d") + (data (i32.const 15228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 15276) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 15404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") + (data (i32.const 15436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") + (data (i32.const 15484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 15516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") + (data (i32.const 15548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") + (data (i32.const 15580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") + (data (i32.const 15612) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 15740) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 15804) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 16204) "\1c\04") - (data (i32.const 16216) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 17260) "\\") - (data (i32.const 17272) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 17356) "\1c") - (data (i32.const 17368) "\01\00\00\00\02\00\00\008") - (data (i32.const 17388) "\1c") - (data (i32.const 17400) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 17420) "\1c") - (data (i32.const 17432) "\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 17452) "\1c") - (data (i32.const 17464) "\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 17484) "\1c") - (data (i32.const 17496) "\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 17516) ",") - (data (i32.const 17528) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 17564) ",") - (data (i32.const 17576) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 17612) ",") - (data (i32.const 17624) "\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") - (data (i32.const 17660) ",") - (data (i32.const 17672) "\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") - (data (i32.const 17708) ",") - (data (i32.const 17720) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 17756) ",") - (data (i32.const 17768) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 17804) ",") - (data (i32.const 17816) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 17852) "\1c") - (data (i32.const 17864) "\01\00\00\00\04\00\00\00-\001") - (data (i32.const 17884) "\1c") - (data (i32.const 17896) "\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 17916) ",") - (data (i32.const 17928) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 17964) ",") - (data (i32.const 17976) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 18012) "\1c") - (data (i32.const 18024) "\01\00\00\00\04\00\00\007\00b") - (data (i32.const 18044) "\1c") - (data (i32.const 18056) "\01\00\00\00\06\00\00\004\00d\002") - (data (i32.const 18076) "\1c") - (data (i32.const 18088) "\01\00\00\00\08\00\00\003\000\003\009") - (data (i32.const 18108) "\1c") - (data (i32.const 18120) "\01\00\00\00\n\00\00\001\00e\002\004\000") - (data (i32.const 18140) "\1c") - (data (i32.const 18152) "\01\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data (i32.const 18172) "\1c") - (data (i32.const 18184) "\01\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data (i32.const 18204) "\1c") - (data (i32.const 18216) "\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data (i32.const 18236) ",") - (data (i32.const 18248) "\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data (i32.const 18284) ",") - (data (i32.const 18296) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") - (data (i32.const 18332) ",") - (data (i32.const 18344) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18380) ",") - (data (i32.const 18392) "\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") - (data (i32.const 18428) ",") - (data (i32.const 18440) "\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18476) ",") - (data (i32.const 18488) "\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18524) ",") - (data (i32.const 18536) "\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18572) ",") - (data (i32.const 18584) "\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") - (data (i32.const 18620) "\1c") - (data (i32.const 18632) "\01\00\00\00\06\00\00\001\001\001") - (data (i32.const 18652) "\1c") - (data (i32.const 18664) "\01\00\00\00\08\00\00\001\001\001\000") - (data (i32.const 18684) "\1c") - (data (i32.const 18696) "\01\00\00\00\n\00\00\001\001\001\000\001") - (data (i32.const 18716) "\1c") - (data (i32.const 18728) "\01\00\00\00\0c\00\00\001\001\001\000\001\001") - (data (i32.const 18748) ",") - (data (i32.const 18760) "\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18796) "L") - (data (i32.const 18808) "\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18876) "\\") - (data (i32.const 18888) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") - (data (i32.const 18972) "\\") - (data (i32.const 18984) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") - (data (i32.const 19068) "\\") - (data (i32.const 19080) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") - (data (i32.const 19164) "\\") - (data (i32.const 19176) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 19260) ",") - (data (i32.const 19272) "\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 19308) "<") - (data (i32.const 19320) "\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") - (data (i32.const 19372) "<") - (data (i32.const 19384) "\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 19436) ",") - (data (i32.const 19448) "\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") - (data (i32.const 19484) ",") - (data (i32.const 19496) "\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 19532) ",") - (data (i32.const 19544) "\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") - (data (i32.const 19580) ",") - (data (i32.const 19592) "\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") - (data (i32.const 19628) ",") - (data (i32.const 19640) "\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") - (data (i32.const 19676) ",") - (data (i32.const 19688) "\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") - (data (i32.const 19724) ",") - (data (i32.const 19736) "\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data (i32.const 19772) ",") - (data (i32.const 19784) "\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data (i32.const 19820) ",") - (data (i32.const 19832) "\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data (i32.const 19868) ",") - (data (i32.const 19880) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 19916) ",") - (data (i32.const 19928) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 19964) ",") - (data (i32.const 19976) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") - (data (i32.const 20012) ",") - (data (i32.const 20024) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20060) ",") - (data (i32.const 20072) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20108) ",") - (data (i32.const 20120) "\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") - (data (i32.const 20156) ",") - (data (i32.const 20168) "\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") - (data (i32.const 20204) "<") - (data (i32.const 20216) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20268) "<") - (data (i32.const 20280) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20332) "<") - (data (i32.const 20344) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20396) "<") - (data (i32.const 20408) "\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20460) "<") - (data (i32.const 20472) "\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20524) "<") - (data (i32.const 20536) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 20588) "\1c") - (data (i32.const 20600) "\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 20620) ",") - (data (i32.const 20632) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 20668) ",") - (data (i32.const 20680) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20716) ",") - (data (i32.const 20728) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20764) "<") - (data (i32.const 20776) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20828) "<") - (data (i32.const 20840) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 20892) "<") - (data (i32.const 20904) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 20956) "<") - (data (i32.const 20968) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 21020) ",") - (data (i32.const 21032) "\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 21068) ",") - (data (i32.const 21080) "\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 21116) ",") - (data (i32.const 21128) "\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 21164) ",") - (data (i32.const 21176) "\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 21212) ",") - (data (i32.const 21224) "\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 21260) "<") - (data (i32.const 21272) "\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 21324) "<") - (data (i32.const 21336) "\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") - (data (i32.const 21388) "<") - (data (i32.const 21400) "\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 21452) "<") - (data (i32.const 21464) "\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 21516) "<") - (data (i32.const 21528) "\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 21580) "<") - (data (i32.const 21592) "\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 21644) "|") - (data (i32.const 21656) "\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 21772) "\9c") - (data (i32.const 21784) "\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 21932) "\\") - (data (i32.const 21944) "\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 22028) "l") - (data (i32.const 22040) "\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") - (data (i32.const 22140) "\\") - (data (i32.const 22152) "\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 22236) "L") - (data (i32.const 22248) "\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") - (data (i32.const 22316) "<") - (data (i32.const 22328) "\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 22380) "<") - (data (i32.const 22392) "\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") - (data (i32.const 22444) "<") - (data (i32.const 22456) "\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") - (data (i32.const 22508) "<") - (data (i32.const 22520) "\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") - (data (i32.const 22572) "<") - (data (i32.const 22584) "\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") - (data (i32.const 22636) ",") - (data (i32.const 22648) "\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") - (data (i32.const 22684) ",") - (data (i32.const 22696) "\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") - (data (i32.const 22732) ",") - (data (i32.const 22744) "\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") - (data (i32.const 22780) "\1c") - (data (i32.const 22792) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 22812) ",") - (data (i32.const 22824) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 16204) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 17260) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 17356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008") + (data (i32.const 17388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002") + (data (i32.const 17420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") + (data (i32.const 17452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") + (data (i32.const 17484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") + (data (i32.const 17516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") + (data (i32.const 17564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") + (data (i32.const 17612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") + (data (i32.const 17660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") + (data (i32.const 17708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") + (data (i32.const 17756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") + (data (i32.const 17804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 17852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001") + (data (i32.const 17884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\000\000\000") + (data (i32.const 17916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 17964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 18012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\007\00b") + (data (i32.const 18044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\00d\002") + (data (i32.const 18076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\003\000\003\009") + (data (i32.const 18108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000") + (data (i32.const 18140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007") + (data (i32.const 18172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007") + (data (i32.const 18204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") + (data (i32.const 18236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") + (data (i32.const 18284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") + (data (i32.const 18332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18380) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") + (data (i32.const 18428) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18476) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") + (data (i32.const 18620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\001\001") + (data (i32.const 18652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\001\001\000") + (data (i32.const 18684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001") + (data (i32.const 18716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001") + (data (i32.const 18748) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 18796) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 18876) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") + (data (i32.const 18972) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") + (data (i32.const 19068) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") + (data (i32.const 19164) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 19260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 19308) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") + (data (i32.const 19372) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") + (data (i32.const 19436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") + (data (i32.const 19484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") + (data (i32.const 19532) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") + (data (i32.const 19580) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") + (data (i32.const 19628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") + (data (i32.const 19676) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") + (data (i32.const 19724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") + (data (i32.const 19772) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") + (data (i32.const 19820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") + (data (i32.const 19868) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") + (data (i32.const 19916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") + (data (i32.const 19964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") + (data (i32.const 20012) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20060) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") + (data (i32.const 20156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") + (data (i32.const 20204) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20268) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20332) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20460) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20524) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") + (data (i32.const 20588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") + (data (i32.const 20620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 20668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20764) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20828) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 20892) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 20956) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") + (data (i32.const 21020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 21068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") + (data (i32.const 21116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") + (data (i32.const 21164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data (i32.const 21212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data (i32.const 21260) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data (i32.const 21324) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") + (data (i32.const 21388) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 21452) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 21516) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 21580) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data (i32.const 21644) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 21772) "\9c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 21932) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 22028) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") + (data (i32.const 22140) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") + (data (i32.const 22236) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") + (data (i32.const 22316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") + (data (i32.const 22380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") + (data (i32.const 22444) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") + (data (i32.const 22508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") + (data (i32.const 22572) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") + (data (i32.const 22636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") + (data (i32.const 22684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") + (data (i32.const 22732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") + (data (i32.const 22780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 22812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 22920) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#push (param $0 i32) (param $1 i32) @@ -6715,6 +5199,7 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $2 i32.eqz if @@ -6793,7 +5278,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 @@ -6821,7 +5306,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 3014704 i32.store @@ -6853,68 +5338,69 @@ local.get $1 i32.const 1 i32.eq - if (result i32) + if local.get $0 i32.const 101 i32.store16 offset=2 local.get $0 i32.const 4 i32.add + local.tee $2 local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -6924,13 +5410,12 @@ i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $2 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select - i32.store16 offset=4 - local.get $1 + i32.store16 else local.get $0 i32.const 4 @@ -6944,26 +5429,27 @@ local.tee $2 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 local.get $0 local.get $2 i32.add - local.tee $2 + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $2 + local.get $0 i32.const 4 i32.add + local.tee $4 local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $2 if i32.const 0 local.get $0 @@ -7021,16 +5507,18 @@ i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $4 i32.const 45 i32.const 43 - local.get $3 + local.get $2 select - i32.store16 offset=4 + i32.store16 local.get $0 local.get $1 i32.add + local.set $1 end + local.get $1 i32.const 2 i32.add end @@ -7139,7 +5627,7 @@ f64.const 347 f64.add local.tee $0 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.tee $7 local.get $0 local.get $7 @@ -7175,37 +5663,36 @@ local.tee $1 i64.const 4294967295 i64.and - local.set $3 + local.set $4 local.get $1 i64.const 32 i64.shr_u - local.tee $9 + local.tee $1 global.get $~lib/util/number/_frc_pow - local.tee $10 + local.tee $9 i64.const 4294967295 i64.and - local.tee $11 - local.tee $1 + local.tee $10 i64.mul - local.get $1 - local.get $3 + local.get $4 + local.get $10 i64.mul i64.const 32 i64.shr_u i64.add - local.set $4 + local.set $11 global.get $~lib/util/number/_frc_plus - local.tee $1 + local.tee $3 i64.const 4294967295 i64.and local.set $12 - local.get $1 + local.get $3 i64.const 32 i64.shr_u - local.tee $1 - local.get $11 + local.tee $3 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $12 i64.mul i64.const 32 @@ -7221,35 +5708,34 @@ i64.const 32 i64.shr_u local.tee $13 - local.get $11 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $11 + local.set $10 local.get $2 i32.const 1 i32.shl i32.const 22864 i32.add + local.get $1 local.get $9 - local.get $10 i64.const 32 i64.shr_u local.tee $9 - local.tee $10 i64.mul - local.get $4 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $10 - i64.mul local.get $4 + local.get $9 + i64.mul + local.get $11 i64.const 4294967295 i64.and i64.add @@ -7258,7 +5744,7 @@ i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 local.get $9 i64.mul local.get $5 @@ -7289,14 +5775,14 @@ local.get $9 local.get $13 i64.mul - local.get $11 + local.get $10 i64.const 32 i64.shr_u i64.add local.get $9 local.get $14 i64.mul - local.get $11 + local.get $10 i64.const 4294967295 i64.and i64.add @@ -7327,25 +5813,15 @@ block $folding-inner0 block $invalid block $~lib/array/Array<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + return end return end @@ -7357,17 +5833,17 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 @@ -7417,17 +5893,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i64.const 0 - i64.store offset=8 - local.get $6 - i64.const 0 - i64.store offset=16 - block $folding-inner3 - block $folding-inner2 + i32.const 0 + i32.const 24 + memory.fill + block $folding-inner2 + block $folding-inner1 block $folding-inner0 local.get $2 i32.eqz @@ -7457,7 +5927,7 @@ i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - br $folding-inner3 + br $folding-inner1 end local.get $0 i32.const 20 @@ -7465,7 +5935,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $7 + local.set $5 i32.const 2147483647 local.get $2 local.get $2 @@ -7479,9 +5949,9 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $6 + local.tee $8 if - local.get $7 + local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -7489,23 +5959,28 @@ i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.load offset=4 i32.const 1712 i32.store - br $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end else - local.get $7 + local.get $5 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $5 local.get $2 local.get $2 - local.get $7 + local.get $5 i32.gt_s select local.tee $2 @@ -7516,10 +5991,10 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.gt_s if global.get $~lib/memory/__stack_pointer @@ -7529,17 +6004,17 @@ local.tee $5 i32.store offset=8 local.get $5 - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u i32.store16 - local.get $4 + local.get $3 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add local.get $5 i32.store @@ -7550,90 +6025,90 @@ i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - br $folding-inner3 + br $folding-inner1 end global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $6 i32.store offset=12 loop $while-continue|1 local.get $0 local.get $1 - local.get $5 + local.get $3 call $~lib/string/String#indexOf local.tee $9 i32.const -1 i32.xor if local.get $9 - local.get $5 + local.get $3 i32.sub - local.tee $4 + local.tee $7 i32.const 0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 1 i32.shl local.tee $10 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $7 i32.store offset=16 - local.get $4 - local.get $5 + local.get $7 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add local.get $10 - call $~lib/memory/memory.copy - local.get $8 - local.get $4 + memory.copy + local.get $6 + local.get $7 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer i32.const 1712 i32.store offset=20 - local.get $8 + local.get $6 i32.const 1712 call $~lib/array/Array<~lib/string/String>#push end local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.eq br_if $folding-inner2 - local.get $6 + local.get $8 local.get $9 i32.add - local.set $5 + local.set $3 br $while-continue|1 end end - local.get $5 + local.get $3 i32.eqz if - local.get $8 + local.get $6 local.get $0 call $~lib/array/Array<~lib/string/String>#push br $folding-inner2 end - local.get $7 local.get $5 + local.get $3 i32.sub local.tee $1 i32.const 0 @@ -7649,21 +6124,21 @@ local.tee $2 i32.store offset=4 local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add local.get $1 - call $~lib/memory/memory.copy - local.get $8 + memory.copy + local.get $6 local.get $2 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer i32.const 1712 i32.store offset=20 - local.get $8 + local.get $6 i32.const 1712 call $~lib/array/Array<~lib/string/String>#push end @@ -7671,7 +6146,7 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 return end i32.const 0 @@ -7679,20 +6154,19 @@ i32.const 0 call $~lib/rt/__newArray local.set $1 - br $folding-inner3 end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $1 return end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $6 ) (func $start:std/string (local $0 i32) @@ -7717,24 +6191,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 - i64.const 0 - i64.store offset=32 - local.get $0 i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill global.get $std/string/str i32.const 1056 i32.ne @@ -21619,7 +20078,7 @@ local.get $3 local.get $2 local.get $4 - call $~lib/memory/memory.copy + memory.copy end local.get $5 local.get $3 @@ -21801,6 +20260,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21837,7 +20297,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $5 local.get $1 i32.const 1 i32.shl @@ -21856,60 +20316,74 @@ local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $7 i32.store local.get $3 local.get $1 - local.get $4 + local.get $5 i32.sub - local.tee $6 + local.tee $8 i32.lt_u if + local.get $8 local.get $3 - local.get $6 + local.get $8 i32.const 2 i32.sub local.get $3 i32.div_u - local.tee $1 i32.mul - local.set $7 - local.get $5 - local.get $2 - local.get $3 - local.get $1 - call $~lib/memory/memory.repeat - local.get $5 + local.tee $6 + i32.sub + local.set $1 + loop $while-continue|0 + local.get $4 + local.get $6 + i32.lt_u + if + local.get $4 + local.get $7 + i32.add + local.get $2 + local.get $3 + memory.copy + local.get $3 + local.get $4 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $6 local.get $7 i32.add local.get $2 - local.get $6 - local.get $7 - i32.sub - call $~lib/memory/memory.copy + local.get $1 + memory.copy else - local.get $5 + local.get $7 local.get $2 - local.get $6 - call $~lib/memory/memory.copy + local.get $8 + memory.copy end - local.get $5 - local.get $6 + local.get $7 + local.get $8 i32.add local.get $0 - local.get $4 - call $~lib/memory/memory.copy + local.get $5 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $7 ) (func $~lib/string/String#padEnd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21950,7 +20424,7 @@ local.get $1 i32.const 1 i32.shl - local.tee $5 + local.tee $1 i32.gt_u i32.or if @@ -21962,60 +20436,78 @@ return end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 local.get $0 local.get $4 - call $~lib/memory/memory.copy + memory.copy local.get $3 - local.get $5 + local.get $1 local.get $4 i32.sub - local.tee $5 + local.tee $0 i32.lt_u if + local.get $0 local.get $3 - local.get $5 + local.get $0 i32.const 2 i32.sub local.get $3 i32.div_u - local.tee $0 i32.mul - local.set $6 - local.get $1 + local.tee $5 + i32.sub + local.set $7 local.get $4 + local.get $6 i32.add - local.tee $4 - local.get $2 - local.get $3 - local.get $0 - call $~lib/memory/memory.repeat + local.set $1 + i32.const 0 + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $5 local.get $4 local.get $6 i32.add + i32.add local.get $2 - local.get $5 - local.get $6 - i32.sub - call $~lib/memory/memory.copy + local.get $7 + memory.copy else - local.get $1 local.get $4 + local.get $6 i32.add local.get $2 - local.get $5 - call $~lib/memory/memory.copy + local.get $0 + memory.copy end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $6 ) (func $~lib/string/String#trimStart (param $0 i32) (result i32) (local $1 i32) @@ -22165,7 +20657,7 @@ local.get $1 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22317,7 +20809,7 @@ local.get $2 local.get $0 local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22564,7 +21056,7 @@ local.get $2 i32.add local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22631,13 +21123,13 @@ local.get $4 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $4 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22647,6 +21139,7 @@ (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -22674,7 +21167,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 i64.extend_i32_s local.get $1 i64.extend_i32_s @@ -22690,7 +21183,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 0 local.get $1 select @@ -22716,7 +21209,7 @@ end global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 + local.get $4 i32.mul i32.const 1 i32.shl @@ -22724,13 +21217,31 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store - local.get $3 - local.get $0 - local.get $2 + local.get $1 + local.get $4 i32.const 1 i32.shl - local.get $1 - call $~lib/memory/memory.repeat + local.tee $4 + i32.mul + local.set $1 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $3 + i32.add + local.get $0 + local.get $4 + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22832,7 +21343,7 @@ i32.const 1 i32.shl local.tee $7 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $7 i32.add @@ -22840,7 +21351,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $5 i32.add @@ -22860,7 +21371,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22967,7 +21478,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $4 local.set $1 loop $for-loop|0 @@ -22999,7 +21510,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $4 i32.add @@ -23029,7 +21540,7 @@ local.get $5 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy loop $while-continue|1 local.get $0 local.get $1 @@ -23048,7 +21559,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $3 local.get $8 i32.add @@ -23127,7 +21638,7 @@ local.get $6 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $6 local.get $9 i32.add @@ -23140,7 +21651,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $6 i32.add @@ -23190,7 +21701,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end local.get $5 local.get $1 @@ -23329,7 +21840,7 @@ local.get $0 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -23418,7 +21929,7 @@ local.get $0 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -23533,7 +22044,7 @@ local.get $4 i32.add local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -24937,7 +23448,7 @@ local.get $2 i32.const 22864 local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.debug.wat similarity index 79% rename from tests/compiler/std/symbol.untouched.wat rename to tests/compiler/std/symbol.debug.wat index ed4a37b46d..f2f7253bf1 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.debug.wat @@ -3,9 +3,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) @@ -27,10 +27,10 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) (global $std/symbol/key1 (mut i32) (i32.const 0)) @@ -2122,237 +2122,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2402,7 +2171,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -3444,1268 +3213,15 @@ local.get $2 i32.load offset=4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#concat - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $~lib/symbol/stringToId - local.tee $1 + local.get $1 + call $~lib/string/String#concat + ) + (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 @@ -5472,8 +3988,13 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 - i32.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -5484,8 +4005,13 @@ unreachable end global.get $std/symbol/key2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 - i32.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -6131,13 +4657,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/symbol.json b/tests/compiler/std/symbol.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/std/symbol.json +++ b/tests/compiler/std/symbol.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.release.wat similarity index 79% rename from tests/compiler/std/symbol.optimized.wat rename to tests/compiler/std/symbol.release.wat index 41f8793785..d2f4b56baa 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1,10 +1,10 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1363,7 +1363,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1378,7 +1378,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1391,7 +1391,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1399,7 +1399,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1410,16 +1410,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1430,16 +1430,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1447,7 +1447,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1455,8 +1455,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1473,7 +1473,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1483,13 +1483,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1502,40 +1502,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1595,182 +1595,11 @@ local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) @@ -2089,7 +1918,6 @@ local.get $0 i32.load offset=4 local.get $1 - local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -2128,21 +1956,20 @@ local.get $0 if local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 local.get $1 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $0 + local.get $2 i32.const -2 i32.and local.set $0 @@ -2150,9 +1977,9 @@ end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 1648 @@ -2162,926 +1989,53 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2700 - i32.lt_s - if - i32.const 19104 - i32.const 19152 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - i32.add - local.tee $2 - i32.eqz + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.add + local.tee $2 + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3100,13 +2054,13 @@ local.get $2 local.get $0 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $3 i32.add local.get $1 local.get $4 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3118,76 +2072,30 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/map/Map - block $~lib/map/Map<~lib/string/String,usize> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid - end - return + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end return end local.get $0 i32.load - local.tee $1 - if - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - local.get $0 - i32.load offset=8 - local.tee $1 local.tee $0 - i32.add - local.set $2 - loop $while-continue|0 + if local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - end - local.get $0 - i32.const 12 - i32.add - local.set $0 - br $while-continue|0 - end + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - br $folding-inner0 + return end local.get $0 i32.load @@ -3206,7 +2114,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|01 + loop $while-continue|0 local.get $0 local.get $2 i32.lt_u @@ -3218,7 +2126,7 @@ i32.eqz if local.get $0 - i32.load offset=4 + i32.load local.tee $3 if local.get $3 @@ -3229,18 +2137,67 @@ i32.const 12 i32.add local.set $0 - br $while-continue|01 + br $while-continue|0 end end - br $folding-inner0 + local.get $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + local.get $0 + i32.load offset=8 + local.tee $1 + local.tee $0 + i32.add + local.set $2 + loop $while-continue|01 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + end + local.get $0 + i32.const 12 + i32.add + local.set $0 + br $while-continue|01 + end end - unreachable - end - local.get $1 - if local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end + unreachable ) (func $~start global.get $~started @@ -3507,11 +2464,11 @@ global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $3 + local.tee $2 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $3 + local.get $2 i32.eqz if unreachable @@ -3540,7 +2497,7 @@ local.tee $0 if local.get $0 - local.get $3 + local.get $2 i32.store offset=4 else local.get $4 @@ -3609,7 +2566,7 @@ i32.store offset=4 local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $4 i32.load offset=16 i32.const 12 @@ -3619,18 +2576,18 @@ local.get $1 local.set $0 loop $while-continue|0 - local.get $2 + local.get $3 local.get $9 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.load local.tee $10 i32.store offset=8 @@ -3638,7 +2595,7 @@ local.get $10 i32.store local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 local.get $0 @@ -3661,10 +2618,10 @@ i32.add local.set $0 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $while-continue|0 end end @@ -3728,7 +2685,7 @@ i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 - local.get $3 + local.get $2 i32.store offset=4 local.get $4 local.get $4 @@ -3774,7 +2731,7 @@ i32.store local.get $4 i32.load - local.get $3 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3823,7 +2780,7 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $2 local.get $0 i32.load i32.eq @@ -3912,7 +2869,7 @@ i32.store offset=4 local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $4 i32.load offset=16 i32.const 12 @@ -3922,23 +2879,23 @@ local.get $1 local.set $0 loop $while-continue|00 - local.get $2 + local.get $3 local.get $9 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $2 + local.get $3 i32.load local.tee $10 i32.store local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 local.get $0 @@ -3987,10 +2944,10 @@ i32.add local.set $0 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $while-continue|00 end end @@ -4047,7 +3004,7 @@ local.get $0 i32.add local.tee $0 - local.get $3 + local.get $2 i32.store local.get $0 i32.const 1056 @@ -4087,7 +3044,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return end i32.const 19104 @@ -4572,7 +3529,14 @@ global.get $std/symbol/sym2 call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 + global.get $~lib/memory/__stack_pointer global.get $std/symbol/key1 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1088 @@ -4581,7 +3545,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/symbol/key2 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1088 diff --git a/tests/compiler/std/symbol.ts b/tests/compiler/std/symbol.ts index 9fb8c76a71..35b24e3c23 100644 --- a/tests/compiler/std/symbol.ts +++ b/tests/compiler/std/symbol.ts @@ -1,18 +1,18 @@ var sym1 = Symbol("123"); var sym2 = Symbol("123"); -assert(sym1 !== sym2); +assert(sym1 != sym2); var sym3 = Symbol.for("123"); var sym4 = Symbol.for("123"); -assert(sym3 === sym4); +assert(sym3 == sym4); var key1 = Symbol.keyFor(sym1); var key2 = Symbol.keyFor(sym2); -assert(key1 === null); -assert(key2 === null); +assert(key1 == null); +assert(key2 == null); var key3 = Symbol.keyFor(sym3)!; var key4 = Symbol.keyFor(sym4)!; diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.debug.wat similarity index 100% rename from tests/compiler/std/trace.untouched.wat rename to tests/compiler/std/trace.debug.wat diff --git a/tests/compiler/std/trace.json b/tests/compiler/std/trace.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/std/trace.json +++ b/tests/compiler/std/trace.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.release.wat similarity index 100% rename from tests/compiler/std/trace.optimized.wat rename to tests/compiler/std/trace.release.wat diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.debug.wat similarity index 97% rename from tests/compiler/std/typedarray.untouched.wat rename to tests/compiler/std/typedarray.debug.wat index 151728470b..28bd233fe6 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -77,9 +77,9 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/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 $~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)) @@ -2433,237 +2433,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2713,7 +2482,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -2888,23 +2657,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 @@ -4410,1527 +4165,274 @@ local.get $10 i32.const 0 i32.ne - local.set $20 - local.get $20 - if - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $21 - local.get $21 - i32.const -1 - i32.ne - if - local.get $0 - local.get $21 - local.get $9 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $12 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $10 - i32.const 1 - i32.sub - local.set $10 - br $for-loop|4 - end - end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $8 - call $~lib/rt/tlsf/__free - ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $3 - local.get $2 - local.get $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 336 - i32.const 608 - i32.const 1435 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 336 - i32.const 608 - i32.const 318 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - local.get $2 - i32.or - i32.and - i32.store8 - ) - (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 336 - i32.const 608 - i32.const 307 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 336 - i32.const 608 - i32.const 36 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int8Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $11 - local.get $9 - local.tee $10 - local.get $11 - local.get $10 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $11 - local.get $9 - local.tee $10 - local.get $11 - local.get $10 - i32.lt_s - select - end - local.set $4 - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $5 - local.get $4 - i32.lt_s - if - local.get $8 - local.get $5 - i32.add - local.get $6 - local.get $4 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - end - local.get $7 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + local.set $20 + local.get $20 + if + local.get $8 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + i32.const -1 + i32.ne + if + local.get $0 + local.get $21 + local.get $9 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $12 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $10 + i32.const 1 + i32.sub + local.set $10 + br $for-loop|4 + end end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + call $~lib/typedarray/Float64Array#get:length + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.set $2 + local.get $1 + i64.reinterpret_f64 + local.set $3 local.get $2 - i32.const 4 - i32.and + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $2 + local.get $3 + local.get $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $3 + local.get $2 + local.get $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 336 + i32.const 608 + i32.const 1435 + i32.const 64 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 2 - i32.and + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 336 + i32.const 608 + i32.const 318 + i32.const 45 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add local.get $2 - i32.const 1 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $2 + i32.sub + i32.const 31 + i32.shr_s + local.get $2 + i32.or i32.and + i32.store8 + ) + (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 336 + i32.const 608 + i32.const 307 + i32.const 45 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 36 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $9 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end + i32.add + local.tee $10 i32.const 0 - i32.const 1 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $5 + local.tee $11 + local.get $9 + local.tee $10 + local.get $11 + local.get $10 i32.lt_s - drop + select + end + local.set $5 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub + i32.add + local.tee $10 i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $4 + local.tee $11 + local.get $9 + local.tee $10 + local.get $11 + local.get $10 + i32.lt_s + select + end + local.set $4 + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $5 + local.get $4 + i32.lt_s + if + local.get $8 local.get $5 + i32.add + local.get $6 local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + local.get $5 + i32.sub + memory.fill end + local.get $7 ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -5943,7 +4445,7 @@ local.get $3 local.get $2 local.get $0 - call $~lib/memory/memory.copy + memory.copy end local.get $3 ) @@ -6352,7 +4854,7 @@ local.get $11 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 ) (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) @@ -9242,7 +7744,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -23522,7 +22024,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -23559,7 +22061,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -23666,7 +22168,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -23880,7 +22382,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -24720,7 +23222,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_s + i32.trunc_sat_f32_s else i32.const 0 end @@ -24926,7 +23428,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_s + i32.trunc_sat_f64_s else i32.const 0 end @@ -24990,7 +23492,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -25138,7 +23640,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -25349,7 +23851,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_u + i32.trunc_sat_f32_u else i32.const 0 end @@ -25551,7 +24053,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_u + i32.trunc_sat_f64_u else i32.const 0 end @@ -25615,7 +24117,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -25763,7 +24265,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -25984,7 +24486,7 @@ local.get $11 f32.min f32.max - i32.trunc_f32_u + i32.trunc_sat_f32_u else i32.const 0 end @@ -26213,7 +24715,7 @@ local.get $11 f64.min f64.max - i32.trunc_f64_u + i32.trunc_sat_f64_u else i32.const 0 end @@ -26277,7 +24779,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -26719,7 +25221,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_s + i32.trunc_sat_f32_s else i32.const 0 end @@ -26921,7 +25423,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_s + i32.trunc_sat_f64_s else i32.const 0 end @@ -27080,7 +25582,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -27388,7 +25890,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_u + i32.trunc_sat_f32_u else i32.const 0 end @@ -27590,7 +26092,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_u + i32.trunc_sat_f64_u else i32.const 0 end @@ -27749,7 +26251,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -27897,7 +26399,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -28011,7 +26513,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_s + i32.trunc_sat_f32_s else i32.const 0 end @@ -28213,7 +26715,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_s + i32.trunc_sat_f64_s else i32.const 0 end @@ -28562,7 +27064,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 @@ -28680,7 +27182,7 @@ f32.eq if (result i32) local.get $11 - i32.trunc_f32_u + i32.trunc_sat_f32_u else i32.const 0 end @@ -28882,7 +27384,7 @@ f64.eq if (result i32) local.get $11 - i32.trunc_f64_u + i32.trunc_sat_f64_u else i32.const 0 end @@ -29391,7 +27893,7 @@ f32.eq if (result i64) local.get $11 - i64.trunc_f32_s + i64.trunc_sat_f32_s else i64.const 0 end @@ -29455,7 +27957,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -29551,7 +28053,7 @@ f64.eq if (result i64) local.get $11 - i64.trunc_f64_s + i64.trunc_sat_f64_s else i64.const 0 end @@ -30060,7 +28562,7 @@ f32.eq if (result i64) local.get $11 - i64.trunc_f32_u + i64.trunc_sat_f32_u else i64.const 0 end @@ -30124,7 +28626,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -30220,7 +28722,7 @@ f64.eq if (result i64) local.get $11 - i64.trunc_f64_u + i64.trunc_sat_f64_u else i64.const 0 end @@ -30684,7 +29186,7 @@ i32.load offset=4 local.get $4 i32.load offset=8 - call $~lib/memory/memory.copy + memory.copy ) (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -31772,7 +30274,7 @@ local.get $11 f32.min f32.max - i32.trunc_f32_u + i32.trunc_sat_f32_u else i32.const 0 end @@ -50621,14 +49123,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -50807,14 +49304,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -50996,14 +49488,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -51185,14 +49672,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -51371,14 +49853,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -51560,14 +50037,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -51743,14 +50215,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -51926,14 +50393,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -52112,14 +50574,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -52298,14 +50755,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -52484,14 +50936,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayReverseValues local.tee $0 @@ -54034,14 +52481,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54159,14 +52601,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54287,14 +52724,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54417,14 +52849,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54548,14 +52975,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54682,14 +53104,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -54801,143 +53218,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/typedarray/testArrayWrapValues - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store offset=4 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $5 - i32.store offset=12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array.wrap@varargs - local.tee $6 - i32.store offset=16 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - local.get $3 - call $~lib/typedarray/Uint32Array#__get - local.get $6 - local.get $3 - call $~lib/typedarray/Uint32Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 730 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -54952,14 +53233,140 @@ 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 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + global.get $std/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 0 + local.get $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store offset=4 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $5 + i32.store offset=12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array.wrap@varargs + local.tee $6 i32.store offset=16 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.get $3 + call $~lib/typedarray/Uint32Array#__get + local.get $6 + local.get $3 + call $~lib/typedarray/Uint32Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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 global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -55091,14 +53498,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -55232,14 +53634,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -55375,14 +53772,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $std/typedarray/testArrayWrapValues local.tee $0 @@ -55610,14 +54002,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -55904,14 +54291,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -56198,14 +54580,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -56492,14 +54869,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -56786,14 +55158,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -57080,14 +55447,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -57374,14 +55736,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -57668,14 +56025,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -57962,14 +56314,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -58256,14 +56603,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -58527,14 +56869,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -60240,17 +58577,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.const 32 + memory.fill global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32.const 1 i32.eq @@ -63635,7 +61964,7 @@ local.get $6 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $9 global.get $~lib/memory/__stack_pointer @@ -67361,7 +65690,7 @@ local.get $8 i32.add local.get $10 - call $~lib/memory/memory.copy + memory.copy local.get $11 local.set $12 global.get $~lib/memory/__stack_pointer @@ -67486,7 +65815,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -67797,7 +66126,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -67967,7 +66296,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -68137,7 +66466,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -68307,7 +66636,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -68477,7 +66806,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -68855,7 +67184,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -69204,7 +67533,7 @@ local.get $5 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $5 i32.add @@ -69332,7 +67661,7 @@ local.get $2 i32.const 8784 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer @@ -69450,7 +67779,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 local.get $4 i32.add @@ -69612,7 +67941,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $7 local.get $4 i32.add @@ -69915,7 +68244,7 @@ local.get $1 i32.add local.get $6 - call $~lib/memory/memory.copy + memory.copy local.get $7 local.set $8 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.release.wat similarity index 89% rename from tests/compiler/std/typedarray.optimized.wat rename to tests/compiler/std/typedarray.release.wat index e37533c4cc..96bccba5ca 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -21,7 +21,6 @@ (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) @@ -31,6 +30,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) @@ -61,616 +61,307 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33012)) (memory $0 1) - (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1084) "<") - (data (i32.const 1096) "\01\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 (i32.const 1148) "<") - (data (i32.const 1160) "\01\00\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 (i32.const 1212) "<") - (data (i32.const 1224) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1340) "<") - (data (i32.const 1352) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1404) ",") - (data (i32.const 1416) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1484) "<") - (data (i32.const 1496) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1548) "<") - (data (i32.const 1560) "\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1612) "<") - (data (i32.const 1624) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1676) "\1c") - (data (i32.const 1688) "\0e\00\00\00\08\00\00\00\01") - (data (i32.const 1708) "\1c") - (data (i32.const 1724) "\05\00\00\00\01\01\01\04\05") - (data (i32.const 1740) ",") - (data (i32.const 1752) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1788) "\1c") - (data (i32.const 1804) "\05") - (data (i32.const 1820) "\1c") - (data (i32.const 1836) "\05\00\00\00\01\01") - (data (i32.const 1852) "\1c") - (data (i32.const 1868) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1884) "\1c") - (data (i32.const 1900) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1916) "\1c") - (data (i32.const 1932) "\03") - (data (i32.const 1948) "\1c") - (data (i32.const 1964) "\05\00\00\00\01\00\00\00\02") - (data (i32.const 1980) ",") - (data (i32.const 1996) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 2028) ",") - (data (i32.const 2044) "\14") - (data (i32.const 2076) ",") - (data (i32.const 2092) "\14\00\00\00\01\00\00\00\01") - (data (i32.const 2124) ",") - (data (i32.const 2140) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2172) ",") - (data (i32.const 2188) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2220) "\1c") - (data (i32.const 2236) "\0c") - (data (i32.const 2252) ",") - (data (i32.const 2268) "\14\00\00\00\01") - (data (i32.const 2288) "\02") - (data (i32.const 2300) ",") - (data (i32.const 2316) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2348) ",") - (data (i32.const 2364) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2396) ",") - (data (i32.const 2412) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2444) ",") - (data (i32.const 2460) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2492) ",") - (data (i32.const 2508) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2540) ",") - (data (i32.const 2556) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2588) ",") - (data (i32.const 2604) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2636) ",") - (data (i32.const 2652) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2684) ",") - (data (i32.const 2700) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2732) ",") - (data (i32.const 2748) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2780) ",") - (data (i32.const 2796) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2828) ",") - (data (i32.const 2844) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2876) "\1c") - (data (i32.const 2888) "\11\00\00\00\08\00\00\00\02") - (data (i32.const 2908) "\1c") - (data (i32.const 2920) "\12\00\00\00\08\00\00\00\03") - (data (i32.const 2940) "\1c") - (data (i32.const 2952) "\13\00\00\00\08\00\00\00\04") - (data (i32.const 2972) "\1c") - (data (i32.const 2984) "\14\00\00\00\08\00\00\00\05") - (data (i32.const 3004) "\1c") - (data (i32.const 3016) "\15\00\00\00\08\00\00\00\06") - (data (i32.const 3036) "\1c") - (data (i32.const 3048) "\16\00\00\00\08\00\00\00\07") - (data (i32.const 3068) "\1c") - (data (i32.const 3080) "\17\00\00\00\08\00\00\00\08") - (data (i32.const 3100) "\1c") - (data (i32.const 3112) "\18\00\00\00\08\00\00\00\t") - (data (i32.const 3132) "\1c") - (data (i32.const 3144) "\19\00\00\00\08\00\00\00\n") - (data (i32.const 3164) "\1c") - (data (i32.const 3176) "\1a\00\00\00\08\00\00\00\0b") - (data (i32.const 3196) "\1c") - (data (i32.const 3208) "\1b\00\00\00\08\00\00\00\0c") - (data (i32.const 3228) "\1c") - (data (i32.const 3240) "\11\00\00\00\08\00\00\00\0d") - (data (i32.const 3260) "\1c") - (data (i32.const 3272) "\12\00\00\00\08\00\00\00\0e") - (data (i32.const 3292) "\1c") - (data (i32.const 3304) "\13\00\00\00\08\00\00\00\0f") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\14\00\00\00\08\00\00\00\10") - (data (i32.const 3356) "\1c") - (data (i32.const 3368) "\15\00\00\00\08\00\00\00\11") - (data (i32.const 3388) "\1c") - (data (i32.const 3400) "\16\00\00\00\08\00\00\00\12") - (data (i32.const 3420) "\1c") - (data (i32.const 3432) "\17\00\00\00\08\00\00\00\13") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\18\00\00\00\08\00\00\00\14") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\19\00\00\00\08\00\00\00\15") - (data (i32.const 3516) "\1c") - (data (i32.const 3528) "\1a\00\00\00\08\00\00\00\16") - (data (i32.const 3548) "\1c") - (data (i32.const 3560) "\1b\00\00\00\08\00\00\00\17") - (data (i32.const 3580) "\1c") - (data (i32.const 3592) "\1c\00\00\00\08\00\00\00\18") - (data (i32.const 3612) "\1c") - (data (i32.const 3624) "\1d\00\00\00\08\00\00\00\19") - (data (i32.const 3644) "\1c") - (data (i32.const 3656) "\1e\00\00\00\08\00\00\00\1a") - (data (i32.const 3676) "\1c") - (data (i32.const 3688) "\1f\00\00\00\08\00\00\00\1b") - (data (i32.const 3708) "\1c") - (data (i32.const 3720) " \00\00\00\08\00\00\00\1c") - (data (i32.const 3740) "\1c") - (data (i32.const 3752) "!\00\00\00\08\00\00\00\1d") - (data (i32.const 3772) "\1c") - (data (i32.const 3784) "\"\00\00\00\08\00\00\00\1e") - (data (i32.const 3804) "\1c") - (data (i32.const 3816) "#\00\00\00\08\00\00\00\1f") - (data (i32.const 3836) "\1c") - (data (i32.const 3848) "$\00\00\00\08\00\00\00 ") - (data (i32.const 3868) "\1c") - (data (i32.const 3880) "%\00\00\00\08\00\00\00!") - (data (i32.const 3900) "\1c") - (data (i32.const 3912) "&\00\00\00\08\00\00\00\"") - (data (i32.const 3932) "\1c") - (data (i32.const 3944) "\'\00\00\00\08\00\00\00#") - (data (i32.const 3964) "\1c") - (data (i32.const 3976) "(\00\00\00\08\00\00\00$") - (data (i32.const 3996) "\1c") - (data (i32.const 4008) ")\00\00\00\08\00\00\00%") - (data (i32.const 4028) "\1c") - (data (i32.const 4040) "*\00\00\00\08\00\00\00&") - (data (i32.const 4060) "\1c") - (data (i32.const 4072) "+\00\00\00\08\00\00\00\'") - (data (i32.const 4092) "\1c") - (data (i32.const 4104) ",\00\00\00\08\00\00\00(") - (data (i32.const 4124) "\1c") - (data (i32.const 4136) "-\00\00\00\08\00\00\00)") - (data (i32.const 4156) "\1c") - (data (i32.const 4168) ".\00\00\00\08\00\00\00*") - (data (i32.const 4188) "\1c") - (data (i32.const 4200) "/\00\00\00\08\00\00\00+") - (data (i32.const 4220) "\1c") - (data (i32.const 4232) "0\00\00\00\08\00\00\00,") - (data (i32.const 4252) "\1c") - (data (i32.const 4264) "1\00\00\00\08\00\00\00-") - (data (i32.const 4284) "\1c") - (data (i32.const 4296) "\'\00\00\00\08\00\00\00.") - (data (i32.const 4316) "\1c") - (data (i32.const 4328) "\'\00\00\00\08\00\00\00/") - (data (i32.const 4348) "\1c") - (data (i32.const 4360) "(\00\00\00\08\00\00\000") - (data (i32.const 4380) "\1c") - (data (i32.const 4392) "(\00\00\00\08\00\00\001") - (data (i32.const 4412) "\1c") - (data (i32.const 4424) ")\00\00\00\08\00\00\002") - (data (i32.const 4444) "\1c") - (data (i32.const 4456) ")\00\00\00\08\00\00\003") - (data (i32.const 4476) "\1c") - (data (i32.const 4488) "*\00\00\00\08\00\00\004") - (data (i32.const 4508) "\1c") - (data (i32.const 4520) "*\00\00\00\08\00\00\005") - (data (i32.const 4540) "\1c") - (data (i32.const 4552) "+\00\00\00\08\00\00\006") - (data (i32.const 4572) "\1c") - (data (i32.const 4584) "+\00\00\00\08\00\00\007") - (data (i32.const 4604) "\1c") - (data (i32.const 4616) ",\00\00\00\08\00\00\008") - (data (i32.const 4636) "\1c") - (data (i32.const 4648) ",\00\00\00\08\00\00\009") - (data (i32.const 4668) "\1c") - (data (i32.const 4680) "-\00\00\00\08\00\00\00:") - (data (i32.const 4700) "\1c") - (data (i32.const 4712) "-\00\00\00\08\00\00\00;") - (data (i32.const 4732) "\1c") - (data (i32.const 4744) ".\00\00\00\08\00\00\00<") - (data (i32.const 4764) "\1c") - (data (i32.const 4776) ".\00\00\00\08\00\00\00=") - (data (i32.const 4796) "\1c") - (data (i32.const 4808) "/\00\00\00\08\00\00\00>") - (data (i32.const 4828) "\1c") - (data (i32.const 4840) "/\00\00\00\08\00\00\00?") - (data (i32.const 4860) "\1c") - (data (i32.const 4872) "0\00\00\00\08\00\00\00@") - (data (i32.const 4892) "\1c") - (data (i32.const 4904) "0\00\00\00\08\00\00\00A") - (data (i32.const 4924) "\1c") - (data (i32.const 4936) "1\00\00\00\08\00\00\00B") - (data (i32.const 4956) "\1c") - (data (i32.const 4968) "1\00\00\00\08\00\00\00C") - (data (i32.const 4988) "\1c") - (data (i32.const 5000) "\'\00\00\00\08\00\00\00D") - (data (i32.const 5020) "\1c") - (data (i32.const 5032) "\'\00\00\00\08\00\00\00E") - (data (i32.const 5052) "\1c") - (data (i32.const 5064) "(\00\00\00\08\00\00\00F") - (data (i32.const 5084) "\1c") - (data (i32.const 5096) "(\00\00\00\08\00\00\00G") - (data (i32.const 5116) "\1c") - (data (i32.const 5128) ")\00\00\00\08\00\00\00H") - (data (i32.const 5148) "\1c") - (data (i32.const 5160) ")\00\00\00\08\00\00\00I") - (data (i32.const 5180) "\1c") - (data (i32.const 5192) "*\00\00\00\08\00\00\00J") - (data (i32.const 5212) "\1c") - (data (i32.const 5224) "*\00\00\00\08\00\00\00K") - (data (i32.const 5244) "\1c") - (data (i32.const 5256) "+\00\00\00\08\00\00\00L") - (data (i32.const 5276) "\1c") - (data (i32.const 5288) "+\00\00\00\08\00\00\00M") - (data (i32.const 5308) "\1c") - (data (i32.const 5320) ",\00\00\00\08\00\00\00N") - (data (i32.const 5340) "\1c") - (data (i32.const 5352) ",\00\00\00\08\00\00\00O") - (data (i32.const 5372) "\1c") - (data (i32.const 5384) "-\00\00\00\08\00\00\00P") - (data (i32.const 5404) "\1c") - (data (i32.const 5416) "-\00\00\00\08\00\00\00Q") - (data (i32.const 5436) "\1c") - (data (i32.const 5448) ".\00\00\00\08\00\00\00R") - (data (i32.const 5468) "\1c") - (data (i32.const 5480) ".\00\00\00\08\00\00\00S") - (data (i32.const 5500) "\1c") - (data (i32.const 5512) "/\00\00\00\08\00\00\00T") - (data (i32.const 5532) "\1c") - (data (i32.const 5544) "/\00\00\00\08\00\00\00U") - (data (i32.const 5564) "\1c") - (data (i32.const 5576) "0\00\00\00\08\00\00\00V") - (data (i32.const 5596) "\1c") - (data (i32.const 5608) "0\00\00\00\08\00\00\00W") - (data (i32.const 5628) "\1c") - (data (i32.const 5640) "1\00\00\00\08\00\00\00X") - (data (i32.const 5660) "\1c") - (data (i32.const 5672) "1\00\00\00\08\00\00\00Y") - (data (i32.const 5692) "\1c") - (data (i32.const 5704) "\'\00\00\00\08\00\00\00Z") - (data (i32.const 5724) "\1c") - (data (i32.const 5736) "\'\00\00\00\08\00\00\00[") - (data (i32.const 5756) "\1c") - (data (i32.const 5768) "(\00\00\00\08\00\00\00\\") - (data (i32.const 5788) "\1c") - (data (i32.const 5800) "(\00\00\00\08\00\00\00]") - (data (i32.const 5820) "\1c") - (data (i32.const 5832) ")\00\00\00\08\00\00\00^") - (data (i32.const 5852) "\1c") - (data (i32.const 5864) ")\00\00\00\08\00\00\00_") - (data (i32.const 5884) "\1c") - (data (i32.const 5896) "*\00\00\00\08\00\00\00`") - (data (i32.const 5916) "\1c") - (data (i32.const 5928) "*\00\00\00\08\00\00\00a") - (data (i32.const 5948) "\1c") - (data (i32.const 5960) "+\00\00\00\08\00\00\00b") - (data (i32.const 5980) "\1c") - (data (i32.const 5992) "+\00\00\00\08\00\00\00c") - (data (i32.const 6012) "\1c") - (data (i32.const 6024) ",\00\00\00\08\00\00\00d") - (data (i32.const 6044) "\1c") - (data (i32.const 6056) ",\00\00\00\08\00\00\00e") - (data (i32.const 6076) "\1c") - (data (i32.const 6088) "-\00\00\00\08\00\00\00f") - (data (i32.const 6108) "\1c") - (data (i32.const 6120) "-\00\00\00\08\00\00\00g") - (data (i32.const 6140) "\1c") - (data (i32.const 6152) ".\00\00\00\08\00\00\00h") - (data (i32.const 6172) "\1c") - (data (i32.const 6184) ".\00\00\00\08\00\00\00i") - (data (i32.const 6204) "\1c") - (data (i32.const 6216) "/\00\00\00\08\00\00\00j") - (data (i32.const 6236) "\1c") - (data (i32.const 6248) "/\00\00\00\08\00\00\00k") - (data (i32.const 6268) "\1c") - (data (i32.const 6280) "0\00\00\00\08\00\00\00l") - (data (i32.const 6300) "\1c") - (data (i32.const 6312) "0\00\00\00\08\00\00\00m") - (data (i32.const 6332) "\1c") - (data (i32.const 6344) "1\00\00\00\08\00\00\00n") - (data (i32.const 6364) "\1c") - (data (i32.const 6376) "1\00\00\00\08\00\00\00o") - (data (i32.const 6396) "\1c") - (data (i32.const 6408) "\'\00\00\00\08\00\00\00p") - (data (i32.const 6428) "\1c") - (data (i32.const 6440) "\'\00\00\00\08\00\00\00q") - (data (i32.const 6460) "\1c") - (data (i32.const 6472) "(\00\00\00\08\00\00\00r") - (data (i32.const 6492) "\1c") - (data (i32.const 6504) "(\00\00\00\08\00\00\00s") - (data (i32.const 6524) "\1c") - (data (i32.const 6536) ")\00\00\00\08\00\00\00t") - (data (i32.const 6556) "\1c") - (data (i32.const 6568) ")\00\00\00\08\00\00\00u") - (data (i32.const 6588) "\1c") - (data (i32.const 6600) "*\00\00\00\08\00\00\00v") - (data (i32.const 6620) "\1c") - (data (i32.const 6632) "*\00\00\00\08\00\00\00w") - (data (i32.const 6652) "\1c") - (data (i32.const 6664) "+\00\00\00\08\00\00\00x") - (data (i32.const 6684) "\1c") - (data (i32.const 6696) "+\00\00\00\08\00\00\00y") - (data (i32.const 6716) "\1c") - (data (i32.const 6728) ",\00\00\00\08\00\00\00z") - (data (i32.const 6748) "\1c") - (data (i32.const 6760) ",\00\00\00\08\00\00\00{") - (data (i32.const 6780) "\1c") - (data (i32.const 6792) "-\00\00\00\08\00\00\00|") - (data (i32.const 6812) "\1c") - (data (i32.const 6824) "-\00\00\00\08\00\00\00}") - (data (i32.const 6844) "\1c") - (data (i32.const 6856) ".\00\00\00\08\00\00\00~") - (data (i32.const 6876) "\1c") - (data (i32.const 6888) ".\00\00\00\08\00\00\00\7f") - (data (i32.const 6908) "\1c") - (data (i32.const 6920) "/\00\00\00\08\00\00\00\80") - (data (i32.const 6940) "\1c") - (data (i32.const 6952) "/\00\00\00\08\00\00\00\81") - (data (i32.const 6972) "\1c") - (data (i32.const 6984) "0\00\00\00\08\00\00\00\82") - (data (i32.const 7004) "\1c") - (data (i32.const 7016) "0\00\00\00\08\00\00\00\83") - (data (i32.const 7036) "\1c") - (data (i32.const 7048) "1\00\00\00\08\00\00\00\84") - (data (i32.const 7068) "\1c") - (data (i32.const 7080) "1\00\00\00\08\00\00\00\85") - (data (i32.const 7100) "\1c") - (data (i32.const 7116) "\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 7132) ",") - (data (i32.const 7144) "\10\00\00\00\10\00\00\00\d0\1b\00\00\d0\1b\00\00\0c\00\00\00\03") - (data (i32.const 7180) "\1c") - (data (i32.const 7192) "2\00\00\00\08\00\00\00\86") - (data (i32.const 7212) "\1c") - (data (i32.const 7224) "3\00\00\00\08\00\00\00\87") - (data (i32.const 7244) "\1c") - (data (i32.const 7256) "4\00\00\00\08\00\00\00\88") - (data (i32.const 7276) "\1c") - (data (i32.const 7288) "5\00\00\00\08\00\00\00\89") - (data (i32.const 7308) "\1c") - (data (i32.const 7320) "6\00\00\00\08\00\00\00\8a") - (data (i32.const 7340) "\1c") - (data (i32.const 7352) "7\00\00\00\08\00\00\00\8b") - (data (i32.const 7372) "\1c") - (data (i32.const 7384) "8\00\00\00\08\00\00\00\8c") - (data (i32.const 7404) "\1c") - (data (i32.const 7416) "9\00\00\00\08\00\00\00\8d") - (data (i32.const 7436) "\1c") - (data (i32.const 7448) ":\00\00\00\08\00\00\00\8e") - (data (i32.const 7468) "\1c") - (data (i32.const 7480) ";\00\00\00\08\00\00\00\8f") - (data (i32.const 7500) "\1c") - (data (i32.const 7512) "<\00\00\00\08\00\00\00\90") - (data (i32.const 7532) "<") - (data (i32.const 7548) "$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 7596) ",") - (data (i32.const 7608) "\10\00\00\00\10\00\00\00\80\1d\00\00\80\1d\00\00$\00\00\00\t") - (data (i32.const 7644) "<") - (data (i32.const 7660) ",\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 (i32.const 7708) ",") - (data (i32.const 7720) "\10\00\00\00\10\00\00\00\f0\1d\00\00\f0\1d\00\00,\00\00\00\0b") - (data (i32.const 7756) "\1c") - (data (i32.const 7768) "\01") - (data (i32.const 7788) "|") - (data (i32.const 7800) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 7916) "<") - (data (i32.const 7928) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 7980) "\1c") - (data (i32.const 7992) "\01\00\00\00\02\00\00\000") + (data (i32.const 1036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1084) "<\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1148) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1212) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1340) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1484) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1548) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01") + (data (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 1740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05") + (data (i32.const 1820) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01") + (data (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03") + (data (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 1980) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2028) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14") + (data (i32.const 2076) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") + (data (i32.const 2124) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2172) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c") + (data (i32.const 2252) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02") + (data (i32.const 2300) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2348) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2444) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2588) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2636) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2828) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02") + (data (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04") + (data (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05") + (data (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06") + (data (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07") + (data (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08") + (data (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t") + (data (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n") + (data (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b") + (data (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c") + (data (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d") + (data (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e") + (data (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17") + (data (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18") + (data (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19") + (data (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a") + (data (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b") + (data (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c") + (data (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d") + (data (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e") + (data (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f") + (data (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00 ") + (data (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00%\00\00\00\08\00\00\00!") + (data (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00\"") + (data (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00#") + (data (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00$") + (data (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00%") + (data (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00&") + (data (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00\'") + (data (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00(") + (data (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00)") + (data (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00*") + (data (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00+") + (data (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00,") + (data (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00-") + (data (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00.") + (data (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00/") + (data (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\000") + (data (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\001") + (data (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\002") + (data (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\003") + (data (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\004") + (data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\005") + (data (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\006") + (data (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\007") + (data (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\008") + (data (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\009") + (data (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00:") + (data (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00;") + (data (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00<") + (data (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00=") + (data (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00>") + (data (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00?") + (data (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00@") + (data (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00A") + (data (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00B") + (data (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00C") + (data (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00D") + (data (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00E") + (data (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00F") + (data (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00G") + (data (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00H") + (data (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00I") + (data (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00J") + (data (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00K") + (data (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L") + (data (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M") + (data (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N") + (data (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O") + (data (i32.const 5372) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P") + (data (i32.const 5404) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q") + (data (i32.const 5436) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R") + (data (i32.const 5468) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S") + (data (i32.const 5500) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T") + (data (i32.const 5532) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U") + (data (i32.const 5564) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00V") + (data (i32.const 5596) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00W") + (data (i32.const 5628) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00X") + (data (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y") + (data (i32.const 5692) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z") + (data (i32.const 5724) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00[") + (data (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00\\") + (data (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00]") + (data (i32.const 5820) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00^") + (data (i32.const 5852) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00_") + (data (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00`") + (data (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a") + (data (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b") + (data (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c") + (data (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d") + (data (i32.const 6044) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e") + (data (i32.const 6076) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f") + (data (i32.const 6108) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g") + (data (i32.const 6140) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h") + (data (i32.const 6172) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i") + (data (i32.const 6204) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j") + (data (i32.const 6236) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k") + (data (i32.const 6268) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00l") + (data (i32.const 6300) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00m") + (data (i32.const 6332) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00n") + (data (i32.const 6364) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00o") + (data (i32.const 6396) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00p") + (data (i32.const 6428) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00q") + (data (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00r") + (data (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00s") + (data (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00t") + (data (i32.const 6556) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00u") + (data (i32.const 6588) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00v") + (data (i32.const 6620) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00w") + (data (i32.const 6652) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00x") + (data (i32.const 6684) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00y") + (data (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00z") + (data (i32.const 6748) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00{") + (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00|") + (data (i32.const 6812) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00}") + (data (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00~") + (data (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00\7f") + (data (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00\80") + (data (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00\81") + (data (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\82") + (data (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\83") + (data (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\84") + (data (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\85") + (data (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 7132) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\d0\1b\00\00\d0\1b\00\00\0c\00\00\00\03") + (data (i32.const 7180) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\86") + (data (i32.const 7212) "\1c\00\00\00\00\00\00\00\00\00\00\003\00\00\00\08\00\00\00\87") + (data (i32.const 7244) "\1c\00\00\00\00\00\00\00\00\00\00\004\00\00\00\08\00\00\00\88") + (data (i32.const 7276) "\1c\00\00\00\00\00\00\00\00\00\00\005\00\00\00\08\00\00\00\89") + (data (i32.const 7308) "\1c\00\00\00\00\00\00\00\00\00\00\006\00\00\00\08\00\00\00\8a") + (data (i32.const 7340) "\1c\00\00\00\00\00\00\00\00\00\00\007\00\00\00\08\00\00\00\8b") + (data (i32.const 7372) "\1c\00\00\00\00\00\00\00\00\00\00\008\00\00\00\08\00\00\00\8c") + (data (i32.const 7404) "\1c\00\00\00\00\00\00\00\00\00\00\009\00\00\00\08\00\00\00\8d") + (data (i32.const 7436) "\1c\00\00\00\00\00\00\00\00\00\00\00:\00\00\00\08\00\00\00\8e") + (data (i32.const 7468) "\1c\00\00\00\00\00\00\00\00\00\00\00;\00\00\00\08\00\00\00\8f") + (data (i32.const 7500) "\1c\00\00\00\00\00\00\00\00\00\00\00<\00\00\00\08\00\00\00\90") + (data (i32.const 7532) "<\00\00\00\00\00\00\00\00\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") + (data (i32.const 7596) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80\1d\00\00\80\1d\00\00$\00\00\00\t") + (data (i32.const 7644) "<\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\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 (i32.const 7708) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\f0\1d\00\00\f0\1d\00\00,\00\00\00\0b") + (data (i32.const 7756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 7788) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 7916) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 7980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (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 (i32.const 8412) "\1c\04") - (data (i32.const 8424) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 9468) "\\") - (data (i32.const 9480) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 9564) "\1c") - (data (i32.const 9576) "\01\00\00\00\02\00\00\00,") - (data (i32.const 9596) ",") - (data (i32.const 9608) "\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") - (data (i32.const 9644) "\1c") - (data (i32.const 9656) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 9676) "\1c") - (data (i32.const 9688) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 9708) ",") - (data (i32.const 9720) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9756) ",") - (data (i32.const 9768) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 8412) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 9468) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 9564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 9596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") + (data (i32.const 9644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 9676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 9708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (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_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00\80+\00\00\80+\00\00\18\00\00\00\03") - (data (i32.const 11212) "\1c") - (data (i32.const 11228) "\03\00\00\00\92\91\90") - (data (i32.const 11244) ",") - (data (i32.const 11256) "\0f\00\00\00\10\00\00\00\e0+\00\00\e0+\00\00\03\00\00\00\03") - (data (i32.const 11292) "\1c") - (data (i32.const 11308) "\n\00\00\00\01\02\03") - (data (i32.const 11324) ",") - (data (i32.const 11336) "\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 11372) "\1c") - (data (i32.const 11388) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 11404) "\1c") - (data (i32.const 11420) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 11436) "\1c") - (data (i32.const 11452) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 11468) "\1c") - (data (i32.const 11484) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 11500) "\1c") - (data (i32.const 11516) "\n\00\00\00\01\02\03") - (data (i32.const 11532) ",") - (data (i32.const 11544) "\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 11580) "\1c") - (data (i32.const 11596) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 11612) "\1c") - (data (i32.const 11628) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 11644) "\1c") - (data (i32.const 11660) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 11676) "\1c") - (data (i32.const 11692) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 11708) "\1c") - (data (i32.const 11724) "\n\00\00\00\01\02\03") - (data (i32.const 11740) "<") - (data (i32.const 11752) "\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") - (data (i32.const 11804) "\1c") - (data (i32.const 11820) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 11836) "\1c") - (data (i32.const 11852) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 11868) "\1c") - (data (i32.const 11884) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 11900) "\1c") - (data (i32.const 11916) "\n\00\00\00defg\ff\ff\ff") - (data (i32.const 11932) ",") - (data (i32.const 11948) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 11980) ",") - (data (i32.const 11992) "\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 12028) ",") - (data (i32.const 12044) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 12076) ",") - (data (i32.const 12092) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 12124) ",") - (data (i32.const 12140) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 12172) ",") - (data (i32.const 12188) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 12220) ",") - (data (i32.const 12236) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 12268) ",") - (data (i32.const 12280) "\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 12316) ",") - (data (i32.const 12332) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 12364) ",") - (data (i32.const 12380) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 12412) ",") - (data (i32.const 12428) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 12460) ",") - (data (i32.const 12476) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 12508) "<") - (data (i32.const 12524) "(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 12572) ",") - (data (i32.const 12584) "\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 12620) "<") - (data (i32.const 12636) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 12684) "<") - (data (i32.const 12700) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 12748) "<") - (data (i32.const 12764) "(\00\00\00\01\00\00\00\02") - (data (i32.const 12788) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 12812) "<") - (data (i32.const 12828) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 12876) "<") - (data (i32.const 12892) "(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 12940) ",") - (data (i32.const 12952) "\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 12988) "<") - (data (i32.const 13004) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 13052) "<") - (data (i32.const 13068) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 13116) "<") - (data (i32.const 13132) "(\00\00\00\01\00\00\00\02") - (data (i32.const 13156) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 13180) "<") - (data (i32.const 13196) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 13244) "l") - (data (i32.const 13260) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 13356) ",") - (data (i32.const 13368) "\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 13404) "l") - (data (i32.const 13420) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 13516) "l") - (data (i32.const 13532) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 13628) "l") - (data (i32.const 13644) "P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (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 (i32.const 13740) "l") - (data (i32.const 13756) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 13852) "l") - (data (i32.const 13868) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 13964) ",") - (data (i32.const 13976) "\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 14012) "l") - (data (i32.const 14028) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 14124) "l") - (data (i32.const 14140) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 14236) "l") - (data (i32.const 14252) "P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (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 (i32.const 14348) "l") - (data (i32.const 14364) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 14460) "<") - (data (i32.const 14476) "(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 14524) ",") - (data (i32.const 14536) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 14572) "<") - (data (i32.const 14588) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data (i32.const 14636) "<") - (data (i32.const 14652) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data (i32.const 14700) "<") - (data (i32.const 14716) "(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 14764) "l") - (data (i32.const 14780) "P") - (data (i32.const 14790) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 14876) ",") - (data (i32.const 14888) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 14924) "l") - (data (i32.const 14940) "P") - (data (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 (i32.const 15036) "l") - (data (i32.const 15052) "P") - (data (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 (i32.const 15148) "l") - (data (i32.const 15164) "P") - (data (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 (i32.const 15260) "\1c") - (data (i32.const 15276) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data (i32.const 15292) "\1c") - (data (i32.const 15308) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") - (data (i32.const 15324) "\1c") - (data (i32.const 15336) "E\00\00\00\08\00\00\00\91") - (data (i32.const 15356) "\1c") - (data (i32.const 15368) "E\00\00\00\08\00\00\00\92") - (data (i32.const 15388) "\1c") - (data (i32.const 15400) "F\00\00\00\08\00\00\00\93") - (data (i32.const 15420) "\1c") - (data (i32.const 15432) "F\00\00\00\08\00\00\00\94") - (data (i32.const 15452) "\1c") - (data (i32.const 15464) "F\00\00\00\08\00\00\00\95") - (data (i32.const 15484) "\1c") - (data (i32.const 15496) "F\00\00\00\08\00\00\00\96") - (data (i32.const 15516) "\1c") - (data (i32.const 15528) "G\00\00\00\08\00\00\00\97") - (data (i32.const 15548) "\1c") - (data (i32.const 15560) "G\00\00\00\08\00\00\00\98") - (data (i32.const 15580) "\1c") - (data (i32.const 15592) "H\00\00\00\08\00\00\00\99") - (data (i32.const 15612) "\1c") - (data (i32.const 15624) "H\00\00\00\08\00\00\00\9a") - (data (i32.const 15644) "\1c") - (data (i32.const 15656) "I\00\00\00\08\00\00\00\9b") - (data (i32.const 15676) "\1c") - (data (i32.const 15688) "I\00\00\00\08\00\00\00\9c") - (data (i32.const 15708) "\1c") - (data (i32.const 15720) "J\00\00\00\08\00\00\00\9d") - (data (i32.const 15740) "\1c") - (data (i32.const 15752) "J\00\00\00\08\00\00\00\9e") - (data (i32.const 15772) "\1c") - (data (i32.const 15784) "K\00\00\00\08\00\00\00\9f") - (data (i32.const 15804) "\1c") - (data (i32.const 15816) "K\00\00\00\08\00\00\00\a0") - (data (i32.const 15836) "\1c") - (data (i32.const 15848) "L\00\00\00\08\00\00\00\a1") - (data (i32.const 15868) "\1c") - (data (i32.const 15880) "L\00\00\00\08\00\00\00\a2") - (data (i32.const 15900) "\1c") - (data (i32.const 15912) "M\00\00\00\08\00\00\00\a3") - (data (i32.const 15932) "\1c") - (data (i32.const 15944) "M\00\00\00\08\00\00\00\a4") - (data (i32.const 15964) "\1c") - (data (i32.const 15976) "\0e\00\00\00\08\00\00\00\a5") - (data (i32.const 16000) "N\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 16028) "A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02") - (data (i32.const 16124) "B\08\00\00\00\00\00\00\02\t") - (data (i32.const 16492) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") + (data (i32.const 10780) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\00.\000\00,\002\00.\000\00,\003\00.\000\00,\004\00.\000\00,\005\00.\000") + (data (i32.const 10844) "<\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\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 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00p*\00\00p*\00\00,\00\00\00\0b") + (data (i32.const 10956) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10988) ",\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\0c\00\00\00\03") + (data (i32.const 11036) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80@\00\00\a0@\00\00\c0@") + (data (i32.const 11068) ",\00\00\00\00\00\00\00\00\00\00\00=\00\00\00\10\00\00\000+\00\000+\00\00\0c\00\00\00\03") + (data (i32.const 11116) ",\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\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") + (data (i32.const 11164) ",\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") + (data (i32.const 11212) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\92\91\90") + (data (i32.const 11244) ",\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\10\00\00\00\e0+\00\00\e0+\00\00\03\00\00\00\03") + (data (i32.const 11292) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03") + (data (i32.const 11324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 11372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 11404) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 11436) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 11468) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 11500) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03") + (data (i32.const 11532) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 11580) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 11612) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 11644) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 11676) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 11708) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03") + (data (i32.const 11740) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data (i32.const 11804) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 11836) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 11868) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 11900) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff") + (data (i32.const 11932) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") + (data (i32.const 11980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 12028) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 12076) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 12124) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 12172) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 12220) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") + (data (i32.const 12268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 12316) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 12364) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 12412) ",\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 12460) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 12508) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 12620) "<\00\00\00\00\00\00\00\00\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") + (data (i32.const 12684) "<\00\00\00\00\00\00\00\00\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") + (data (i32.const 12748) "<\00\00\00\00\00\00\00\00\00\00\00\00\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") + (data (i32.const 12812) "<\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 12876) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 12988) "<\00\00\00\00\00\00\00\00\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") + (data (i32.const 13052) "<\00\00\00\00\00\00\00\00\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") + (data (i32.const 13116) "<\00\00\00\00\00\00\00\00\00\00\00\00\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") + (data (i32.const 13180) "<\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 13244) "l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 13356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 13404) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 13516) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 13628) "l\00\00\00\00\00\00\00\00\00\00\00\00\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") + (data (i32.const 13740) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 13852) "l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 13964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 14012) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 14124) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 14236) "l\00\00\00\00\00\00\00\00\00\00\00\00\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") + (data (i32.const 14348) "l\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 14460) "<\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@@") + (data (i32.const 14524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 14572) "<\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@\00\00\a0@\00\00\c0@") + (data (i32.const 14636) "<\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@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data (i32.const 14700) "<\00\00\00\00\00\00\00\00\00\00\00\00\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 (i32.const 14764) "l\00\00\00\00\00\00\00\00\00\00\00\00\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@") + (data (i32.const 14876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 14924) "l\00\00\00\00\00\00\00\00\00\00\00\00\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@") + (data (i32.const 15036) "l\00\00\00\00\00\00\00\00\00\00\00\00\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\"@") + (data (i32.const 15148) "l\00\00\00\00\00\00\00\00\00\00\00\00\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") + (data (i32.const 15260) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data (i32.const 15292) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data (i32.const 15324) "\1c\00\00\00\00\00\00\00\00\00\00\00E\00\00\00\08\00\00\00\91") + (data (i32.const 15356) "\1c\00\00\00\00\00\00\00\00\00\00\00E\00\00\00\08\00\00\00\92") + (data (i32.const 15388) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\93") + (data (i32.const 15420) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\94") + (data (i32.const 15452) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\95") + (data (i32.const 15484) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\96") + (data (i32.const 15516) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\97") + (data (i32.const 15548) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\98") + (data (i32.const 15580) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\99") + (data (i32.const 15612) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\9a") + (data (i32.const 15644) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9b") + (data (i32.const 15676) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9c") + (data (i32.const 15708) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9d") + (data (i32.const 15740) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9e") + (data (i32.const 15772) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9f") + (data (i32.const 15804) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\a0") + (data (i32.const 15836) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a1") + (data (i32.const 15868) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a2") + (data (i32.const 15900) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a3") + (data (i32.const 15932) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a4") + (data (i32.const 15964) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\a5") + (data (i32.const 16000) "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\00A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02\00\00\00\00\00\00\00\00\00\00\00B\08\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 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)) @@ -1986,7 +1677,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 + local.set $4 local.get $3 i32.const 4 i32.add @@ -2000,17 +1691,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and local.get $3 @@ -2021,19 +1712,19 @@ i32.const 4 i32.add i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2054,197 +1745,6 @@ end local.get $1 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $4 - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $4 - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $4 - i32.add - local.tee $5 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $0 - i32.store - local.get $5 - local.get $2 - local.get $4 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - local.get $0 - i32.store - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 12 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 8 - i32.sub - local.get $0 - i32.store - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $5 - local.get $0 - i32.store offset=12 - local.get $5 - local.get $0 - i32.store offset=16 - local.get $5 - local.get $0 - i32.store offset=20 - local.get $5 - local.get $0 - i32.store offset=24 - local.get $1 - i32.const 28 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 24 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 20 - i32.sub - local.get $0 - i32.store - local.get $1 - i32.const 16 - i32.sub - local.get $0 - i32.store - local.get $5 - local.get $5 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $4 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.sub - local.set $2 - local.get $0 - i64.extend_i32_u - local.tee $3 - i64.const 32 - i64.shl - local.get $3 - i64.or - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i64.store - local.get $1 - local.get $3 - i64.store offset=8 - local.get $1 - local.get $3 - i64.store offset=16 - local.get $1 - local.get $3 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2358,7 +1858,7 @@ local.tee $1 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $1 ) (func $std/typedarray/testInstantiate (param $0 i32) @@ -2380,23 +1880,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $1 - i64.const 0 - i64.store offset=32 - local.get $1 i32.const 0 - i32.store offset=40 + i32.const 44 + memory.fill local.get $1 local.get $0 call $~lib/typedarray/Int8Array#constructor @@ -3399,15 +2885,15 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) + (local $8 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) + (local $13 i64) + (local $14 f64) + (local $15 f64) + (local $16 i32) local.get $1 i32.const 48 i32.le_s @@ -3432,17 +2918,17 @@ end local.get $0 f64.load - local.set $11 + local.set $14 local.get $0 f64.load offset=8 - local.set $10 + local.set $15 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $14 + local.get $15 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3453,46 +2939,47 @@ f64.store local.get $0 f64.load offset=16 - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $14 + local.get $15 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $14 + local.get $8 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $14 + local.get $1 select f64.store offset=8 local.get $0 - local.get $10 - local.get $9 + local.get $14 + local.get $8 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $10 + local.set $8 local.get $0 f64.load offset=8 - local.set $9 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $14 + local.get $8 + local.get $8 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3502,8 +2989,8 @@ select f64.store local.get $0 - local.get $10 - local.get $9 + local.get $8 + local.get $14 local.get $1 select f64.store offset=8 @@ -3523,43 +3010,43 @@ local.get $1 i32.clz i32.sub - local.tee $8 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $5 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 + local.get $5 local.get $6 - local.get $8 i32.lt_u if - local.get $6 + local.get $5 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -3575,84 +3062,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $12 + local.get $1 + local.get $9 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $12 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -3662,30 +3149,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 + local.set $7 loop $for-loop|3 - local.get $1 local.get $4 - i32.lt_u + local.get $7 + i32.gt_u if local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load - local.tee $8 + local.tee $16 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $14 + local.get $16 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -3694,16 +3181,16 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $15 + local.get $1 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $8 + local.get $16 local.set $3 end local.get $4 @@ -3713,8 +3200,8 @@ br $for-loop|3 end end - local.get $13 - local.get $1 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -3722,15 +3209,15 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add - local.get $7 + local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 - local.set $7 - local.get $1 + local.set $3 + local.get $5 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -3741,7 +3228,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -3753,13 +3240,13 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -3770,9 +3257,9 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -3898,20 +3385,195 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=8 + local.get $1 + i32.le_u + if + i32.const 1360 + i32.const 1632 + i32.const 25 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + ) + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) local.get $0 + i32.load offset=8 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=8 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.set $4 + local.get $1 + i32.load offset=12 + local.get $2 + i32.le_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + local.get $4 + i32.ne + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.load offset=4 - local.set $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=12 local.get $0 i32.load offset=8 - local.set $0 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $0 local.get $2 + local.get $4 i32.add local.tee $2 i32.const 0 @@ -3921,1299 +3583,187 @@ select else local.get $2 - local.get $0 - local.get $0 + local.get $4 local.get $2 - i32.gt_s + local.get $4 + i32.lt_s select end local.tee $2 + i32.const 2 + i32.shl local.get $3 + i32.add + local.get $5 i32.const 0 i32.lt_s if (result i32) - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.add - local.tee $0 + local.tee $3 i32.const 0 - local.get $0 + local.get $3 i32.const 0 i32.gt_s select else - local.get $3 - local.get $0 - local.get $0 - local.get $3 + local.get $5 + local.get $4 + local.get $4 + local.get $5 i32.gt_s select end - local.tee $0 - i32.lt_s + local.get $2 + i32.sub + local.tee $2 + local.get $4 + local.get $1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + memory.copy + local.get $0 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=8 + local.get $1 + i32.le_u if - local.get $2 - local.get $4 - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - call $~lib/memory/memory.fill + i32.const 1360 + i32.const 1632 + i32.const 177 + i32.const 45 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end + (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1360 + i32.const 1632 + i32.const 459 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1360 + i32.const 1632 + i32.const 600 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $1 + i32.le_u + if + i32.const 1360 + i32.const 1632 + i32.const 882 + i32.const 64 + call $~lib/builtins/abort + unreachable end local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=8 i32.const 3 - i32.and - i32.eqz + i32.shr_u + local.get $1 + i32.le_u if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return + i32.const 1360 + i32.const 1632 + i32.const 1023 + i32.const 64 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=8 - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 25 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.set $3 - local.get $1 - i32.load offset=12 - local.get $2 - i32.le_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - local.get $3 - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $5 - local.get $0 - i32.load offset=4 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $4 - local.get $5 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $5 - local.get $4 - local.get $4 - local.get $5 - i32.gt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=8 - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 177 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 459 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 600 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 882 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.get $1 - i32.le_u - if - i32.const 1360 - i32.const 1632 - i32.const 1023 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.get $1 - i32.le_u + i64.store + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5834,7 +4384,7 @@ local.get $1 i32.gt_u select - call $~lib/memory/memory.copy + memory.copy local.get $2 ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6251,7 +4801,6 @@ br $while-continue|0 end end - local.get $4 local.get $3 i64.const 4503599627370496 i64.ge_u @@ -6269,6 +4818,7 @@ i64.sub local.set $3 end + local.get $4 local.get $3 i64.const 11 i64.shl @@ -6570,43 +5120,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -7133,28 +5681,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -7197,28 +5738,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -7262,41 +5796,44 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 - local.tee $3 - local.set $2 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $2 + local.get $0 local.get $3 i32.add - local.get $3 + local.get $0 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $0 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $3 + local.get $0 + local.tee $1 i32.add i32.load8_u i32.const 3 @@ -7305,7 +5842,7 @@ local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|018 end end @@ -7326,8 +5863,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 local.tee $0 i32.eqz @@ -8076,44 +6612,42 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -8640,28 +7174,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -8704,28 +7231,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -8769,41 +7289,44 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 - local.tee $3 - local.set $2 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + local.get $0 local.get $3 i32.add - local.get $3 + local.get $0 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $0 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $3 + local.get $0 + local.tee $1 i32.add i32.load8_u i32.const 3 @@ -8812,7 +7335,7 @@ local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|018 end end @@ -8833,8 +7356,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 local.tee $0 i32.eqz @@ -9582,44 +8104,42 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -10146,28 +8666,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -10210,28 +8723,21 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -10275,41 +8781,44 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 - local.tee $3 - local.set $2 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + local.get $0 local.get $3 i32.add - local.get $3 + local.get $0 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $0 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $3 + local.get $0 + local.tee $1 i32.add i32.load8_u i32.const 3 @@ -10318,7 +8827,7 @@ local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|018 end end @@ -10339,8 +8848,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 local.tee $0 i32.eqz @@ -11167,26 +9675,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $0 + local.get $2 i32.const 7728 i32.store - local.get $0 + local.get $2 i32.const 7740 i32.load - local.tee $0 + local.tee $2 call $~lib/typedarray/Int16Array#constructor local.tee $4 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $4 local.get $1 @@ -11202,10 +9710,8 @@ br $for-loop|0 end end - i32.const 0 - local.set $1 i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $4 i32.load offset=8 @@ -11221,12 +9727,12 @@ i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11234,17 +9740,17 @@ i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -11254,9 +9760,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $4 i32.load offset=8 @@ -11272,12 +9778,12 @@ i32.load offset=4 local.set $2 loop $while-continue|02 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11286,17 +9792,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11308,9 +9814,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 local.get $4 i32.load offset=8 @@ -11326,12 +9832,12 @@ i32.load offset=4 local.set $2 loop $while-continue|05 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11340,17 +9846,17 @@ i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11362,9 +9868,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 local.get $4 i32.load offset=8 @@ -11380,12 +9886,12 @@ i32.load offset=4 local.set $2 loop $while-continue|08 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11394,17 +9900,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11416,9 +9922,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 local.get $4 i32.load offset=8 @@ -11435,12 +9941,12 @@ i32.load offset=4 local.set $2 loop $while-continue|011 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11449,17 +9955,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11471,9 +9977,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $4 i32.load offset=8 @@ -11490,12 +9996,12 @@ i32.load offset=4 local.set $2 loop $while-continue|014 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11504,17 +10010,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11526,9 +10032,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 local.get $4 i32.load offset=8 @@ -11545,12 +10051,12 @@ i32.load offset=4 local.set $2 loop $while-continue|017 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11559,17 +10065,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11581,9 +10087,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 local.get $4 i32.load offset=8 @@ -11600,12 +10106,12 @@ i32.load offset=4 local.set $2 loop $while-continue|020 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11614,17 +10120,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11636,7 +10142,7 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 local.get $4 i32.load offset=8 @@ -11658,35 +10164,35 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|023 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -11756,34 +10262,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 4 - local.get $1 + local.get $0 i32.const 4 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11792,17 +10298,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11814,34 +10320,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11850,17 +10356,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11872,34 +10378,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $0 i32.const 2 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11908,17 +10414,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11930,34 +10436,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 100 - local.get $1 + local.get $0 i32.const 100 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -11966,17 +10472,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -11988,47 +10494,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 - local.get $0 + local.get $1 i32.const 10 i32.sub - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|036 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|036 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -12040,47 +10546,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 - local.get $0 + local.get $1 i32.const 11 i32.sub - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|039 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|039 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12098,9 +10604,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 local.get $4 i32.load offset=8 @@ -12116,12 +10622,12 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12130,17 +10636,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12152,9 +10658,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 local.get $4 i32.load offset=8 @@ -12170,12 +10676,12 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12184,17 +10690,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12204,9 +10710,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 local.get $4 i32.load offset=8 @@ -12222,12 +10728,12 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12236,17 +10742,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12258,9 +10764,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 local.get $4 i32.load offset=8 @@ -12276,12 +10782,12 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12290,17 +10796,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12312,9 +10818,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 local.get $4 i32.load offset=8 @@ -12330,12 +10836,12 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12344,17 +10850,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12366,9 +10872,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 local.get $4 i32.load offset=8 @@ -12384,12 +10890,12 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12398,17 +10904,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12420,9 +10926,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 local.get $4 i32.load offset=8 @@ -12439,12 +10945,12 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12453,17 +10959,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12475,9 +10981,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 local.get $4 i32.load offset=8 @@ -12494,12 +11000,12 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12508,17 +11014,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12556,26 +11062,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $0 + local.get $2 i32.const 7728 i32.store - local.get $0 + local.get $2 i32.const 7740 i32.load - local.tee $0 + local.tee $2 call $~lib/typedarray/Uint16Array#constructor local.tee $4 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $4 local.get $1 @@ -12592,10 +11098,8 @@ br $for-loop|0 end end - i32.const 0 - local.set $1 i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $4 i32.load offset=8 @@ -12611,12 +11115,12 @@ i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12624,17 +11128,17 @@ i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12644,9 +11148,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $4 i32.load offset=8 @@ -12662,12 +11166,12 @@ i32.load offset=4 local.set $2 loop $while-continue|02 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12676,17 +11180,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12698,9 +11202,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 local.get $4 i32.load offset=8 @@ -12716,12 +11220,12 @@ i32.load offset=4 local.set $2 loop $while-continue|05 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12730,17 +11234,17 @@ i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12752,9 +11256,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 local.get $4 i32.load offset=8 @@ -12770,12 +11274,12 @@ i32.load offset=4 local.set $2 loop $while-continue|08 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12784,17 +11288,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12806,9 +11310,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 local.get $4 i32.load offset=8 @@ -12825,12 +11329,12 @@ i32.load offset=4 local.set $2 loop $while-continue|011 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12839,17 +11343,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12861,9 +11365,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $4 i32.load offset=8 @@ -12880,12 +11384,12 @@ i32.load offset=4 local.set $2 loop $while-continue|014 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12894,17 +11398,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12916,9 +11420,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 local.get $4 i32.load offset=8 @@ -12935,12 +11439,12 @@ i32.load offset=4 local.set $2 loop $while-continue|017 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -12949,17 +11453,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12971,9 +11475,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 local.get $4 i32.load offset=8 @@ -12990,12 +11494,12 @@ i32.load offset=4 local.set $2 loop $while-continue|020 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13004,17 +11508,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13026,7 +11530,7 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 local.get $4 i32.load offset=8 @@ -13048,35 +11552,35 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|023 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -13146,34 +11650,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 4 - local.get $1 + local.get $0 i32.const 4 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13182,17 +11686,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -13204,34 +11708,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13240,17 +11744,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -13262,34 +11766,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $0 i32.const 2 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13298,17 +11802,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13320,34 +11824,34 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 100 - local.get $1 + local.get $0 i32.const 100 - i32.le_u + i32.le_s select - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13356,17 +11860,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13378,47 +11882,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 - local.get $0 + local.get $1 i32.const 10 i32.sub - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|036 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|036 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -13430,47 +11934,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 - local.get $0 + local.get $1 i32.const 11 i32.sub - local.set $1 + local.set $0 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 loop $while-continue|039 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|039 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13488,9 +11992,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 local.get $4 i32.load offset=8 @@ -13506,12 +12010,12 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13520,17 +12024,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13542,9 +12046,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 local.get $4 i32.load offset=8 @@ -13560,12 +12064,12 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13574,17 +12078,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -13594,9 +12098,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 local.get $4 i32.load offset=8 @@ -13612,12 +12116,12 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13626,17 +12130,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13648,9 +12152,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 local.get $4 i32.load offset=8 @@ -13666,12 +12170,12 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13680,17 +12184,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13702,9 +12206,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 local.get $4 i32.load offset=8 @@ -13720,12 +12224,12 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13734,17 +12238,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13756,9 +12260,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 local.get $4 i32.load offset=8 @@ -13774,12 +12278,12 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13788,17 +12292,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13810,9 +12314,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 local.get $4 i32.load offset=8 @@ -13829,12 +12333,12 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13843,17 +12347,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13865,9 +12369,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 local.get $4 i32.load offset=8 @@ -13884,12 +12388,12 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl local.get $2 @@ -13898,17 +12402,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13946,28 +12450,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor local.tee $3 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 - local.get $1 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $0 i32.const 7728 local.get $0 @@ -13980,46 +12484,44 @@ br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|0 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -14029,46 +12531,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|02 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14080,46 +12582,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|05 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14131,46 +12633,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|08 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14182,11 +12684,11 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -14197,35 +12699,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|011 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14237,11 +12739,11 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -14252,35 +12754,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|014 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14292,11 +12794,11 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -14307,35 +12809,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|017 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14347,11 +12849,11 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -14362,35 +12864,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|020 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14402,20 +12904,20 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $2 + local.get $3 i32.const 100 i32.sub local.tee $1 @@ -14424,35 +12926,35 @@ i32.const 0 i32.gt_s select - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -14465,15 +12967,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -14484,9 +12986,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -14527,15 +13029,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -14546,9 +13048,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -14592,15 +13094,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -14611,9 +13113,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -14657,15 +13159,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -14676,9 +13178,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -14721,53 +13223,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14779,53 +13281,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14837,53 +13339,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14895,53 +13397,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14953,47 +13455,47 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $1 + local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -15005,47 +13507,47 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $1 + local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15057,53 +13559,53 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 4 i32.const 9 call $~lib/typedarray/Int32Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|042 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15115,46 +13617,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|045 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -15164,46 +13666,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|048 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -15215,46 +13717,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|051 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15266,46 +13768,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|054 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15317,46 +13819,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|057 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15368,50 +13870,50 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|060 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -15423,50 +13925,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|063 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15504,28 +14006,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor local.tee $3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 - local.get $1 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $0 i32.const 7728 local.get $0 @@ -15538,46 +14040,44 @@ br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|0 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -15587,46 +14087,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|02 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15638,46 +14138,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|05 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15689,46 +14189,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|08 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15740,11 +14240,11 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -15755,35 +14255,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|011 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15795,11 +14295,11 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -15810,35 +14310,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|014 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15850,11 +14350,11 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -15865,35 +14365,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|017 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15905,11 +14405,11 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -15920,35 +14420,35 @@ local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|020 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15960,20 +14460,20 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $2 + local.get $3 i32.const 100 i32.sub local.tee $1 @@ -15982,35 +14482,35 @@ i32.const 0 i32.gt_s select - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -16023,15 +14523,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -16042,9 +14542,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -16085,15 +14585,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -16104,9 +14604,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -16150,15 +14650,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -16169,9 +14669,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -16215,15 +14715,15 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 (result i32) i32.const -1 - local.get $1 + local.get $2 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -16234,9 +14734,9 @@ local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.le_s select local.set $0 @@ -16279,53 +14779,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -16337,53 +14837,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -16395,53 +14895,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16453,53 +14953,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 - i32.le_u + i32.le_s select - local.set $0 - local.get $3 + local.set $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16511,47 +15011,47 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $1 + local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -16563,47 +15063,47 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $3 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $1 + local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $3 - i32.load offset=4 local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -16615,52 +15115,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 9 call $~lib/typedarray/Uint32Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|042 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16672,46 +15172,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|045 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -16721,46 +15221,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|048 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16772,46 +15272,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|051 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16823,46 +15323,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|054 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16874,46 +15374,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|057 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16925,50 +15425,50 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|060 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16980,50 +15480,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $2 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|063 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17061,43 +15561,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -17650,30 +16148,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -17718,30 +16209,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -17787,51 +16271,56 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 + local.set $3 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add - local.get $3 + local.get $1 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $1 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -17839,9 +16328,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17855,8 +16344,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -18636,43 +17124,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -19225,30 +17711,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -19293,30 +17772,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -19362,51 +17834,56 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 + local.set $3 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add - local.get $3 + local.get $1 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $1 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -19414,9 +17891,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -19430,8 +17907,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -20211,43 +18687,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float32Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -20802,30 +19276,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -20870,30 +19337,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -20939,51 +19399,56 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - local.set $2 + local.set $3 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add - local.get $3 + local.get $1 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $1 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -20991,9 +19456,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -21007,8 +19472,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -21788,43 +20252,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -22379,30 +20841,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -22447,30 +20902,23 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 local.get $2 - local.get $3 + local.get $2 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 i32.const 0 i32.lt_s select @@ -22516,51 +20964,56 @@ i32.const 1 global.set $~argumentsLength local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 + local.set $3 i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $3 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add - local.get $3 + local.get $1 i32.const 1 i32.sub - local.get $2 - local.get $2 local.get $3 - i32.ge_s + local.get $1 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $2 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -22568,9 +21021,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22584,8 +21037,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $0 - local.tee $2 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -23650,7 +22102,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -23997,7 +22449,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -24251,7 +22703,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -24487,7 +22939,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -24738,7 +23190,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -24967,7 +23419,7 @@ local.get $4 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $4 i32.add @@ -25096,525 +23548,47 @@ i64.shl i64.or i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 0 - i64.lt_s - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 - end - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $3 - i32.const 1 - i32.add - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $3 - i32.add - local.set $3 - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $3 - i32.add - local.tee $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - local.get $6 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - local.get $5 - i64.load - i64.extend32_s - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $1 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $7 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $7 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $6 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + br $while-continue|0 end - local.get $0 - return end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end + local.get $1 i64.const 10 i64.lt_u if + local.get $3 + i32.const 1 + i32.shl local.get $0 + i32.add local.get $1 i64.const 48 i64.or i64.store16 + local.get $3 i32.const 1 + i32.add return end local.get $1 @@ -25669,6 +23643,8 @@ i32.add end end + local.get $3 + i32.add local.set $3 local.get $0 local.get $2 @@ -25727,12 +23703,14 @@ i32.add end end + local.get $3 + i32.add local.tee $3 call $~lib/util/number/utoa64_dec_lut end local.get $3 ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i64) (local $3 i32) @@ -25742,7 +23720,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $7 + local.set $5 local.get $0 i32.load offset=8 i32.const 3 @@ -25760,7 +23738,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 i32.const 1 i32.sub @@ -25774,14 +23752,15 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray + br $__inlined_func$~lib/util/string/joinIntegerArray end local.get $6 i32.eqz if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $7 + block $__inlined_func$~lib/util/number/itoa64 (result i32) + local.get $5 i64.load + i64.extend32_s local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25802,62 +23781,74 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 8000 - br $__inlined_func$~lib/util/number/utoa64 + br $__inlined_func$~lib/util/number/itoa64 end + i64.const 0 + local.get $2 + i64.sub + local.get $2 local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $1 + select + local.tee $2 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.tee $3 + local.get $1 + i32.add + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -25865,8 +23856,8 @@ local.tee $0 i32.store local.get $0 - local.get $1 local.get $3 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -25920,7 +23911,9 @@ i32.add end end - local.tee $1 + local.get $1 + i32.add + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -25929,9 +23922,15 @@ i32.store local.get $0 local.get $2 - local.get $1 + local.get $3 call $~lib/util/number/utoa64_dec_lut end + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -25943,7 +23942,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray + br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer local.get $6 @@ -25951,13 +23950,13 @@ i32.load i32.const 1 i32.shr_u - local.tee $3 - i32.const 20 + local.tee $7 + i32.const 21 i32.add i32.mul - i32.const 20 + i32.const 21 i32.add - local.tee $5 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -25967,7 +23966,7 @@ i32.const 0 local.set $0 loop $for-loop|0 - local.get $4 + local.get $3 local.get $6 i32.lt_s if @@ -25976,2218 +23975,2102 @@ i32.shl local.get $1 i32.add - local.get $4 + local.get $3 i32.const 3 i32.shl - local.get $7 + local.get $5 i32.add i64.load - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $3 + local.get $7 if local.get $0 i32.const 1 i32.shl local.get $1 - i32.add - i32.const 9584 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.add - local.set $0 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $6 - i32.const 3 - i32.shl - local.get $7 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - end - local.get $0 - return - end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - local.get $2 - local.get $1 - i64.sub - local.set $12 - local.get $2 - i64.const 1 - i32.const 0 - local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $13 - i64.const 1 - i64.sub - local.tee $11 - i64.and - local.set $7 - local.get $2 - local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $9 - loop $while-continue|0 - local.get $9 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or - if - local.get $5 - local.tee $8 - i32.const 1 - i32.add - local.set $5 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $4 - local.get $7 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - i64.ge_u - if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $0 - i32.load16_u - local.set $9 - loop $while-continue|3 - local.get $1 - local.get $12 - i64.lt_u - local.get $2 - local.get $4 - local.get $1 - i64.sub - i64.le_u - i32.and - if (result i32) - local.get $12 - local.get $1 - i64.sub - local.get $1 - local.get $2 - i64.add - local.tee $7 - local.get $12 - i64.sub - i64.gt_u - local.get $7 - local.get $12 - i64.lt_u - i32.or - else - i32.const 0 - end - if - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $9 - i32.store16 - local.get $5 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 (result i32) - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $7 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $5 - local.tee $3 + i32.add + i32.const 9584 + local.get $7 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $7 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $4 + local.get $0 i32.const 1 + i32.shl + local.get $1 i32.add - local.set $5 - local.get $3 - i32.const 1 + local.get $6 + i32.const 3 i32.shl - local.get $0 + local.get $5 i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 i32.add - i32.store16 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $1 - local.get $11 - i64.and - local.tee $7 - local.get $4 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $12 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $0 - i32.load16_u - local.set $9 - loop $while-continue|6 - local.get $1 - local.get $2 - i64.lt_u - local.get $13 - local.get $4 - local.get $1 - i64.sub - i64.le_u - i32.and - if (result i32) - local.get $2 - local.get $1 - i64.sub - local.get $1 - local.get $13 - i64.add - local.tee $7 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $7 - i64.gt_u - i32.or - else - i32.const 0 - end + local.tee $0 + i32.gt_s if - local.get $9 - i32.const 1 - i32.sub - local.set $9 local.get $1 - local.get $13 - i64.add - local.set $1 - br $while-continue|6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end local.get $0 - local.get $9 - i32.store16 - local.get $5 + return end + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 - i32.eqz + local.get $1 + i64.const 10 + i64.lt_u if - local.get $1 - i32.const 1 - i32.shl local.get $0 - i32.add - i32.const 3145774 - i32.store local.get $1 - i32.const 2 - i32.add + i64.const 48 + i64.or + i64.store16 + i32.const 1 return end local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - local.get $0 i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 + 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 - local.set $1 - br $for-loop|0 end end - local.get $3 - i32.const 1 - i32.shl + local.set $3 local.get $0 - i32.add - i32.const 3145774 - i32.store + local.get $2 local.get $3 - i32.const 2 - i32.add + call $~lib/util/number/utoa32_dec_lut else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and + local.get $0 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u if (result i32) - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 local.get $1 - i32.const 1 - i32.add + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and + local.get $1 + i64.const 100000000000000000 + i64.lt_u if (result i32) - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - local.get $0 + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 i32.add - local.get $0 + else local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=4 + local.set $7 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $7 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $2 + i64.const 4294967295 + i64.le_u if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $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 $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $2 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $2 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $2 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 i32.const 1 i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.add - i32.const 48 - i32.store16 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + local.get $1 + call $~lib/util/number/utoa64_dec_lut end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $1 - local.get $3 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.lt_s + if local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 + i32.shl local.get $1 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 i32.add - local.get $1 - i32.const 1 + local.get $4 + i32.const 3 i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 + local.get $7 i32.add - local.tee $2 - i32.const 101 - i32.store16 offset=2 - local.get $2 - i32.const 4 + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 i32.add + local.set $0 local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9584 + local.get $3 + i32.const 1 + i32.shl + memory.copy 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 $3 + i32.add + local.set $0 end + local.get $4 i32.const 1 i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add + local.set $4 + br $for-loop|0 end - i32.const 2 + end + local.get $5 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $6 + i32.const 3 + i32.shl + local.get $7 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $3 - if (result f64) local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $2 - i64.const 4503599627370495 - i64.and - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.tee $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $8 - i32.sub - local.set $10 - local.get $4 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $8 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $8 - i32.sub - local.get $10 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $10 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - local.tee $8 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $9 - local.get $1 - local.get $9 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $9 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 9864 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $9 - i32.const 1 - i32.shl - i32.const 10560 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $11 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $5 - global.get $~lib/util/number/_frc_pow - local.tee $7 - i64.const 4294967295 - i64.and - local.tee $12 - local.tee $2 - i64.mul - local.get $2 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $13 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $2 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $12 - i64.mul - local.get $2 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $14 - global.get $~lib/util/number/_frc_minus - local.tee $15 - i64.const 4294967295 - i64.and - local.set $4 - local.get $15 - i64.const 32 - i64.shr_u - local.tee $15 - local.get $12 - i64.mul - local.get $4 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $5 - local.get $7 - i64.const 32 - i64.shr_u - local.tee $16 - local.tee $7 - i64.mul - local.get $13 - i64.const 32 - i64.shr_u - i64.add - local.get $7 - local.get $11 - i64.mul - local.get $13 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $6 - local.get $16 - i64.mul - local.get $14 - i64.const 32 - i64.shr_u - i64.add + return + end + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) local.get $2 - local.get $16 - i64.mul - local.get $14 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 + local.get $1 i64.sub - local.tee $2 - global.get $~lib/util/number/_exp_pow - local.get $8 - i32.add - i32.const -64 - i32.sub + local.set $12 local.get $2 - local.get $15 - local.get $16 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - local.get $16 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add i64.const 1 - i64.add - i64.sub - local.get $3 - call $~lib/util/number/genDigits + i32.const 0 local.get $3 i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $3 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $13 + i64.const 1 + i64.sub + local.tee $11 + i64.and + local.set $7 + local.get $2 local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u i32.const 3 - return + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $9 + loop $while-continue|0 + local.get $9 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $9 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or if + local.get $5 + local.tee $8 + i32.const 1 + i32.add + local.set $5 + local.get $8 + i32.const 1 + i32.shl local.get $0 - i32.const 45 + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add i32.store16 - local.get $0 + end + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $4 + local.get $7 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + i64.shl + i64.add + local.tee $1 + i64.ge_u + if + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $9 i32.const 2 + i32.shl + i32.const 10736 i32.add - local.set $0 + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $9 + loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u + local.get $2 + local.get $4 + local.get $1 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $12 + local.get $1 + i64.sub + local.get $1 + local.get $2 + i64.add + local.tee $7 + local.get $12 + i64.sub + i64.gt_u + local.get $7 + local.get $12 + i64.lt_u + i32.or + else + i32.const 0 + end + if + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $9 + i32.store16 + local.get $5 + return end + br $while-continue|0 + end + end + loop $while-continue|4 (result i32) + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $7 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 + local.get $3 + i32.const 1 + i32.shl local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 + i32.add local.get $2 - i32.const 8 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 i32.add - return + i32.store16 end - unreachable + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $11 + i64.and + local.tee $7 + local.get $4 + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 + i32.const 0 + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $9 + loop $while-continue|6 + local.get $1 + local.get $2 + i64.lt_u + local.get $13 + local.get $4 + local.get $1 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end + end + local.get $0 + local.get $9 + i32.store16 + local.get $5 end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s + local.get $2 + i32.eqz if - i32.const 33040 - i32.const 33088 - i32.const 1 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray + i32.shl local.get $0 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinFloatArray - end - local.get $2 - i32.eqz - if - local.get $3 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 28 - i32.add - i32.mul - i32.const 28 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 + i32.const 3145774 i32.store - i32.const 0 - local.set $0 + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $3 + i32.lt_s if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 - i32.const 2 + i32.const 1 i32.shl - local.get $3 - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 - local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 + i32.const 48 + i32.store16 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 - local.get $0 + local.get $3 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.add - local.get $2 - i32.const 2 - i32.shl + i32.const 3145774 + i32.store local.get $3 + i32.const 2 i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.tee $0 + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 i32.gt_s - if - local.get $1 + i32.and + if (result i32) + local.get $3 + i32.const 1 + i32.shl local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - end - local.get $0 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $0 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinFloatArray - end - local.get $2 - i32.eqz - if - local.get $3 - f64.load - call $~lib/util/number/dtoa - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $0 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - i32.const 0 - local.set $0 - loop $for-loop|0 + local.get $0 + i32.const 0 local.get $2 - local.get $5 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 i32.gt_s - if - local.get $0 + i32.and + if (result i32) + i32.const 2 + local.get $3 + i32.sub + local.tee $3 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.add - local.get $5 - i32.const 3 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.get $3 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered + memory.copy local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 i32.add - local.set $0 - local.get $4 + else + local.get $1 + i32.const 1 + i32.eq if local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end i32.const 1 - i32.shl - local.get $1 i32.add - i32.const 9584 - local.get $4 + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 local.get $0 - local.get $4 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $5 - i32.const 1 + local.get $1 + i32.const 2 i32.add - local.set $5 - br $for-loop|0 end end - local.get $6 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 end - local.get $0 ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) (local $3 i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + f64.const 0 + f64.lt local.tee $3 - i32.gt_u - if - i32.const 1360 - i32.const 1632 - i32.const 1870 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $3 - local.get $1 - i32.sub - else - i32.const 1056 - i32.const 1632 - i32.const 1879 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $2 + if (result f64) + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg else - local.get $3 local.get $1 - local.get $2 - i32.add - i32.lt_s - if - i32.const 1056 - i32.const 1632 - i32.const 1884 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - i32.store - local.get $0 - if - local.get $3 - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 1 + local.get $7 + select + i32.const 1075 + i32.sub + local.tee $8 + i32.const 1 + i32.sub local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 + i64.const 4503599627370495 + i64.and + local.get $7 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $7 + i32.sub + local.set $9 + local.get $4 + local.get $7 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $7 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $8 + local.get $7 + i32.sub + local.get $9 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $9 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + local.tee $7 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_sat_f64_s + local.tee $8 local.get $1 + local.get $8 + f64.convert_i32_s + f64.ne i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3 + i32.shr_s + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $8 + i32.const 3 + i32.shl + local.tee $9 + i32.sub + global.set $~lib/util/number/_K + local.get $9 + i32.const 9864 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $8 + i32.const 1 + i32.shl + i32.const 10560 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $2 + i64.const 4294967295 + i64.and + local.set $5 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $4 + global.get $~lib/util/number/_frc_pow + local.tee $10 + i64.const 4294967295 + i64.and + local.tee $11 + i64.mul + local.get $5 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + global.get $~lib/util/number/_frc_plus + local.tee $2 + i64.const 4294967295 + i64.and + local.set $13 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $6 + local.get $11 + i64.mul + local.get $11 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and + local.set $2 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $11 + i64.mul + local.get $2 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $6 + local.get $10 + i64.const 32 + i64.shr_u + local.tee $10 + i64.mul + local.get $14 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $13 + i64.mul + local.get $14 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $6 local.get $3 - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 11020 - i32.load + i32.const 1 + i32.shl local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + i32.add local.get $0 - i32.load offset=4 - local.set $2 - i32.const 11012 - i32.load - local.set $3 - i32.const 11020 - i32.load - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $1 - local.get $2 - i32.add - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end + local.get $4 + local.get $10 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $10 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $6 + global.get $~lib/util/number/_exp_pow + local.get $7 + i32.add + i32.const -64 + i32.sub + local.get $6 + local.get $10 + local.get $15 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $10 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 + i32.add ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=8 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - i32.lt_s + f64.const 0 + f64.eq if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + return end - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $0 local.get $1 - i32.load offset=4 - local.set $3 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0 + f64.sub + f64.const 0 + f64.ne + if local.get $1 - local.get $2 - i32.gt_s + local.get $1 + f64.ne if local.get $0 - local.get $2 - i32.add - local.get $2 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - i64.store8 + return + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 local.get $2 - i32.const 1 + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + return end - end - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy + call $~lib/util/number/dtoa_core ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i32.const 1 - i32.shl + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinFloatArray + end + local.get $2 + i32.eqz + if local.get $3 + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load16_s - i32.store8 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $5 + i32.gt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $5 + i32.const 2 + i32.shl + local.get $3 + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $4 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $4 + i32.add + local.set $0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - end - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - local.get $0 - i32.load offset=8 - i32.const 11276 - i32.load - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - i32.const 11268 - i32.load - i32.const 11272 - i32.load - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1908 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.get $2 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0 + local.get $6 + local.get $0 + i32.const 1 + i32.shl local.get $1 + i32.add + local.get $2 + i32.const 2 + i32.shl local.get $3 + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 i32.gt_s if - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - local.tee $4 - i32.wrap_i64 - local.tee $0 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - local.get $4 - i32.const 255 + local.get $1 local.get $0 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - i64.or - i64.and - i64.store8 - local.get $3 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $3 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end + local.get $0 ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1908 - i32.const 19 - call $~lib/builtins/abort - unreachable - end + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 i32.load offset=8 - local.get $2 - local.get $1 - i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - local.set $2 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $3 - i32.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s if - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.shl - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load16_s - local.tee $0 - i32.const 255 - local.get $0 - i32.sub - i32.const 31 - i32.shr_s - i32.or - local.get $0 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinFloatArray + end + local.get $2 + i32.eqz + if local.get $3 - i32.const 1 + f64.load + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $3 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $4 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $4 + i32.add + local.set $0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - end - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 11020 - i32.load - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 11012 - i32.load - local.set $3 - i32.const 11020 - i32.load - local.set $0 - loop $for-loop|0 + local.get $6 local.get $0 + i32.const 1 + i32.shl local.get $1 + i32.add + local.get $2 + i32.const 3 + i32.shl + local.get $3 + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 i32.gt_s if local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - i32.store16 - local.get $1 - i32.const 1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end + local.get $0 ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - i64.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - i32.load offset=8 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 + i32.gt_u if i32.const 1360 i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 1870 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - local.set $1 - loop $for-loop|0 + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + i32.const -1 + i32.eq + if (result i32) + local.get $3 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1632 + i32.const 1879 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $2 + else + local.get $3 local.get $1 local.get $2 - i32.gt_s + i32.add + i32.lt_s if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 1056 + i32.const 1632 + i32.const 1884 + i32.const 7 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 4 - i32.add + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + i32.store local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.get $1 - i32.load offset=4 local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 11276 + i32.const 11020 i32.load - i32.const 7 - i32.add local.get $0 i32.load offset=8 - i32.const 1 - i32.shr_u i32.gt_s if i32.const 1360 @@ -28199,13 +26082,11 @@ end local.get $0 i32.load offset=4 - i32.const 14 - i32.add local.set $2 - i32.const 11268 + i32.const 11012 i32.load local.set $3 - i32.const 11276 + i32.const 11020 i32.load local.set $0 loop $for-loop|0 @@ -28214,15 +26095,15 @@ i32.gt_s if local.get $1 - i32.const 1 - i32.shl local.get $2 i32.add local.get $1 + i32.const 2 + i32.shl local.get $3 i32.add - i32.load8_s - i32.store16 + i32.load + i32.store8 local.get $1 i32.const 1 i32.add @@ -28231,61 +26112,18 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1908 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.load offset=12 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + local.get $0 + i32.load offset=8 local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.lt_s if i32.const 1360 i32.const 1632 @@ -28296,7 +26134,7 @@ end local.get $0 i32.load offset=4 - i32.const 24 + i32.const 6 i32.add local.set $0 local.get $1 @@ -28312,10 +26150,8 @@ local.get $2 i32.gt_s if - local.get $2 - i32.const 2 - i32.shl local.get $0 + local.get $2 i32.add local.get $2 i32.const 3 @@ -28323,57 +26159,7 @@ local.get $3 i32.add i64.load - i64.store32 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.store + i64.store8 local.get $2 i32.const 1 i32.add @@ -28382,19 +26168,11 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u i32.gt_s if i32.const 1360 @@ -28406,108 +26184,24 @@ end local.get $0 i32.load offset=4 - i32.const 16 - i32.add - local.set $0 local.get $1 i32.load offset=4 - local.set $3 local.get $1 i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 11276 - i32.load - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $2 - i32.const 11268 - i32.load - local.set $3 - i32.const 11276 - i32.load - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $1 - i32.const 2 - i32.shl - local.get $2 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_s - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) + memory.copy + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - i32.const 11020 - i32.load local.get $0 i32.load offset=8 - i32.const 3 + local.get $1 + i32.load offset=8 + i32.const 1 i32.shr_u - i32.gt_s + i32.const 4 + i32.add + i32.lt_s if i32.const 1360 i32.const 1632 @@ -28518,50 +26212,48 @@ end local.get $0 i32.load offset=4 - local.set $2 - i32.const 11012 - i32.load - local.set $3 - i32.const 11020 - i32.load + i32.const 4 + i32.add local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 loop $for-loop|0 - local.get $0 local.get $1 + local.get $2 i32.gt_s if - local.get $1 - i32.const 3 - i32.shl + local.get $0 local.get $2 i32.add - local.get $1 - i32.const 2 + local.get $2 + i32.const 1 i32.shl local.get $3 i32.add - i64.load32_s - i64.store - local.get $1 + i32.load16_s + i32.store8 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.const 11276 + i32.load + i32.const 7 + i32.add + i32.lt_s if i32.const 1360 i32.const 1632 @@ -28572,24 +26264,38 @@ end local.get $0 i32.load offset=4 - i32.const 48 + i32.const 7 i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy + i32.const 11268 + i32.load + i32.const 11272 + i32.load + memory.copy ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 - i32.load offset=8 + (local $4 i64) + (local $5 i32) + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1908 + i32.const 19 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=8 + local.get $2 + local.get $1 + i32.load offset=8 i32.const 3 i32.shr_u - i32.gt_s + i32.add + i32.lt_s if i32.const 1360 i32.const 1632 @@ -28598,52 +26304,82 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 i32.load offset=4 - local.set $0 + i32.add + local.set $2 local.get $1 i32.load offset=4 - local.set $3 + local.set $5 local.get $1 i32.load offset=8 + i32.const 3 + i32.shr_u local.set $1 loop $for-loop|0 local.get $1 - local.get $2 + local.get $3 i32.gt_s if local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 3 i32.shl - local.get $0 + local.get $5 i32.add - local.get $2 + i64.load + local.tee $4 + i32.wrap_i64 + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + local.get $4 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + i64.or + i64.and + i64.store8 local.get $3 - i32.add - i64.load8_u - i64.store - local.get $2 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1908 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + local.get $2 local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - i32.const 4 i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.lt_s if i32.const 1360 i32.const 1632 @@ -28652,14 +26388,14 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 i32.load offset=4 - i32.const 32 i32.add - local.set $0 + local.set $2 local.get $1 i32.load offset=4 - local.set $3 + local.set $4 local.get $1 i32.load offset=8 i32.const 1 @@ -28667,40 +26403,49 @@ local.set $1 loop $for-loop|0 local.get $1 - local.get $2 + local.get $3 i32.gt_s if local.get $2 - i32.const 3 - i32.shl - local.get $0 + local.get $3 i32.add - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add - i64.load16_s - i64.store - local.get $2 + i32.load16_s + local.tee $0 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i32.or + local.get $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 11276 + i32.const 11020 i32.load - i32.const 7 - i32.add local.get $0 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.gt_s if @@ -28713,13 +26458,11 @@ end local.get $0 i32.load offset=4 - i32.const 56 - i32.add local.set $2 - i32.const 11268 + i32.const 11012 i32.load local.set $3 - i32.const 11276 + i32.const 11020 i32.load local.set $0 loop $for-loop|0 @@ -28728,15 +26471,17 @@ i32.gt_s if local.get $1 - i32.const 3 + i32.const 1 i32.shl local.get $2 i32.add local.get $1 + i32.const 2 + i32.shl local.get $3 i32.add - i64.load8_s - i64.store + i32.load + i32.store16 local.get $1 i32.const 1 i32.add @@ -28745,786 +26490,716 @@ end end ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - local.get $1 - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_s offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_s - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $0 - local.get $6 - i32.add - local.get $8 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - i32.load8_s - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 i32.add - i32.load8_s local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_s offset=1 - local.get $5 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_s offset=1 - local.get $1 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.set $7 - local.get $6 + i32.load offset=8 i32.const 1 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 i32.add - local.set $2 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $1 loop $for-loop|0 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $4 local.get $2 i32.const 1 - i32.sub - local.tee $2 - i32.add + i32.shl local.get $0 + i32.add + local.get $2 + i32.const 3 + i32.shl + local.get $3 + i32.add + i64.load + i64.store16 local.get $2 + i32.const 1 i32.add - i32.load8_s - i32.store8 + local.set $2 br $for-loop|0 end end - loop $for-loop|1 - local.get $3 - local.get $6 + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 i32.gt_s if - local.get $7 - local.get $6 - i32.sub - local.get $4 - i32.add + local.get $2 + i32.const 1 + i32.shl local.get $0 - local.get $6 i32.add - i32.load8_s offset=1 - i32.store8 - local.get $6 + local.get $2 + local.get $3 + i32.add + i32.load8_u + i32.store16 + local.get $2 i32.const 1 i32.add - local.set $6 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - loop $for-loop|2 + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 4 + i32.add + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + memory.copy + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 11276 + i32.load + i32.const 7 + i32.add + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 14 + i32.add + local.set $2 + i32.const 11268 + i32.load + local.set $3 + i32.const 11276 + i32.load + local.set $0 + loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.le_s + i32.gt_s if - local.get $4 - local.get $6 - i32.add - i32.load8_s - local.set $8 + local.get $1 + i32.const 1 + i32.shl local.get $2 - local.get $4 + i32.add + local.get $1 + local.get $3 i32.add i32.load8_s - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.add - local.get $7 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end + i32.store16 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|2 + br $for-loop|0 end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1908 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.load offset=12 + i32.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + memory.copy + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) local.get $1 - i32.const 48 - i32.le_s + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $1 + loop $for-loop|0 local.get $1 - i32.const 1 - i32.le_s + local.get $2 + i32.gt_s if - return - end - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_s offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 + local.get $2 i32.const 2 - global.set $~argumentsLength + i32.shl local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 + i32.add local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 + i32.const 3 + i32.shl local.get $3 + i32.add + i64.load + i64.store32 local.get $2 - select - i32.store8 offset=1 - return + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - return end - i32.const 33 + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $1 - i32.clz - i32.sub - local.tee $6 + i32.load offset=8 + local.get $0 + i32.load offset=8 i32.const 2 - i32.shl - local.tee $7 - i32.const 1 - i32.shl - local.set $8 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.shr_u + i32.gt_s if - call $~lib/rt/tlsf/initialize + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $8 - call $~lib/rt/tlsf/allocateBlock + local.get $0 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + local.get $3 + i32.add + i32.load8_u + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 4 i32.add - local.tee $9 - local.get $7 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 16 i32.add - local.set $10 - loop $for-loop|1 - local.get $5 - local.get $6 - i32.lt_u + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s if - local.get $5 + local.get $2 i32.const 2 i32.shl - local.get $9 + local.get $0 i32.add - i32.const -1 + local.get $2 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_s i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 11276 + i32.load + i32.const 7 + i32.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s if - call $~lib/rt/tlsf/initialize + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 - i32.const 1 + i32.load offset=4 + i32.const 28 i32.add - local.tee $5 - i32.const 32 - i32.lt_s - if + local.set $2 + i32.const 11268 + i32.load + local.set $3 + i32.const 11276 + i32.load + local.set $0 + loop $for-loop|0 local.get $0 - i32.const 0 - local.get $8 - i32.const 31 - local.get $8 - i32.const 31 - i32.lt_s - select - local.tee $1 - local.get $5 - local.get $2 - call $~lib/util/sort/insertionSort - end - loop $while-continue|2 local.get $1 - local.get $8 - i32.lt_s + i32.gt_s if - local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $6 - local.get $8 + i32.const 2 + i32.shl local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - local.get $0 - local.get $6 - local.get $8 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $8 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end + local.get $1 local.get $3 - local.get $6 i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $8 + i32.load8_s + i32.store + local.get $1 i32.const 1 i32.add - i64.extend_i32_u - local.tee $12 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 + local.set $1 + br $for-loop|0 + end + end + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 11020 + i32.load + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 11012 + i32.load + local.set $3 + i32.const 11020 + i32.load + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $2 i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $12 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u - if - local.get $4 - i32.const 2 - i32.shl - local.get $9 - i32.add - i32.load - local.tee $13 - i32.const -1 - i32.ne - if - local.get $0 - local.get $13 - local.get $10 - local.get $4 - i32.const 2 - i32.shl - local.tee $3 - i32.add - i32.load - i32.const 1 - i32.add - local.get $1 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $3 - local.get $9 - i32.add - i32.const -1 - i32.store - local.get $13 - local.set $3 - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|3 - end - end - local.get $9 - local.get $7 + local.get $1 i32.const 2 i32.shl - local.tee $4 - i32.add local.get $3 - i32.store - local.get $4 - local.get $10 i32.add + i64.load32_s + i64.store local.get $1 - i32.store - local.get $6 - local.set $3 - local.get $5 + i32.const 1 + i32.add local.set $1 - local.get $7 - local.set $4 - br $while-continue|2 + br $for-loop|0 end end - loop $for-loop|4 - local.get $4 + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 48 + i32.add + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + memory.copy + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s if - local.get $4 - i32.const 2 + local.get $2 + i32.const 3 i32.shl - local.get $9 + local.get $0 i32.add - i32.load - local.tee $1 - i32.const -1 - i32.ne - if - local.get $0 - local.get $1 - local.get $4 - i32.const 2 - i32.shl - local.get $10 - i32.add - i32.load - i32.const 1 - i32.add - local.get $8 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $4 + local.get $2 + local.get $3 + i32.add + i64.load8_u + i64.store + local.get $2 i32.const 1 - i32.sub - local.set $4 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.extend8_s - local.get $1 - i32.extend8_s - i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $1 - i32.extend8_s - local.tee $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 4 + i32.add local.get $0 - i32.extend8_s - local.tee $0 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=4 + i32.const 32 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $2 + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.const 1 + i32.shl + local.get $3 + i32.add + i64.load16_s + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 11276 + i32.load + i32.const 7 + i32.add + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.gt_s - i32.sub + if + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $2 + i32.const 11268 + i32.load + local.set $3 + i32.const 11276 + i32.load + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load8_s + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -29558,11 +27233,11 @@ local.get $7 i32.add local.tee $3 - i32.load8_u offset=1 + i32.load8_s offset=1 local.tee $6 local.set $5 local.get $3 - i32.load8_u + i32.load8_s local.set $3 i32.const 2 global.set $~argumentsLength @@ -29592,7 +27267,7 @@ local.get $0 local.get $6 i32.add - i32.load8_u + i32.load8_s local.set $8 i32.const 2 global.set $~argumentsLength @@ -29631,7 +27306,7 @@ local.get $0 local.get $6 i32.add - i32.load8_u + i32.load8_s local.set $3 i32.const 2 global.set $~argumentsLength @@ -29669,7 +27344,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -29683,14 +27358,14 @@ local.get $0 local.get $1 i32.add - i32.load8_u + i32.load8_s local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.add - i32.load8_u + i32.load8_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -29708,9 +27383,9 @@ local.get $4 i32.add local.tee $5 - i32.load8_u offset=1 + i32.load8_s offset=1 local.get $5 - i32.load8_u + i32.load8_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -29740,14 +27415,14 @@ local.get $1 i32.add local.tee $3 - i32.load8_u + i32.load8_s local.set $5 local.get $3 local.get $0 local.get $2 i32.add local.tee $3 - i32.load8_u + i32.load8_s i32.store8 local.get $1 i32.const 1 @@ -29773,9 +27448,9 @@ local.get $4 i32.add local.tee $1 - i32.load8_u offset=1 + i32.load8_s offset=1 local.get $1 - i32.load8_u + i32.load8_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -29797,7 +27472,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -29826,7 +27501,7 @@ local.get $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.store8 br $for-loop|0 end @@ -29844,7 +27519,7 @@ local.get $0 local.get $6 i32.add - i32.load8_u offset=1 + i32.load8_s offset=1 i32.store8 local.get $6 i32.const 1 @@ -29861,12 +27536,12 @@ local.get $4 local.get $6 i32.add - i32.load8_u + i32.load8_s local.set $8 local.get $2 local.get $4 i32.add - i32.load8_u + i32.load8_s local.set $7 i32.const 2 global.set $~argumentsLength @@ -29906,7 +27581,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29916,8 +27591,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -29941,80 +27616,81 @@ br $break|0 end local.get $0 - i32.load8_u - local.set $1 + i32.load8_s + local.set $5 local.get $0 - i32.load8_u offset=1 + i32.load8_s offset=1 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store8 local.get $0 - i32.load8_u offset=2 - local.set $5 + i32.load8_s offset=2 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store8 offset=1 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store8 offset=2 end local.get $0 - i32.load8_u - local.set $1 + i32.load8_s + local.set $4 local.get $0 - i32.load8_u offset=1 + i32.load8_s offset=1 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store8 local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store8 offset=1 return @@ -30026,50 +27702,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -30083,84 +27759,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 + call $~lib/util/sort/extendRunRight + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -30170,30 +27846,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -30202,16 +27878,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -30221,8 +27897,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -30230,15 +27906,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -30249,7 +27925,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -30261,15 +27937,15 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -30278,42 +27954,32 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 - local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 + i32.extend8_s local.get $1 - i32.lt_u + i32.extend8_s i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 255 - i32.and + i32.extend8_s local.tee $1 local.get $0 - i32.const 255 - i32.and + i32.extend8_s local.tee $0 - i32.gt_u + i32.gt_s local.get $0 local.get $1 - i32.gt_u + i32.gt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -30343,17 +28009,15 @@ local.get $7 i32.ge_s if - local.get $7 - i32.const 1 - i32.shl local.get $0 + local.get $7 i32.add local.tee $3 - i32.load16_s offset=2 + i32.load8_u offset=1 local.tee $6 local.set $5 local.get $3 - i32.load16_s + i32.load8_u local.set $3 i32.const 2 global.set $~argumentsLength @@ -30380,12 +28044,10 @@ i32.le_s if block $while-break|1 - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add - i32.load16_s + i32.load8_u local.set $8 i32.const 2 global.set $~argumentsLength @@ -30397,13 +28059,11 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add local.get $8 - i32.store16 offset=4 + i32.store8 offset=2 local.get $6 i32.const 1 i32.sub @@ -30412,25 +28072,21 @@ end end end - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add local.get $3 - i32.store16 offset=4 + i32.store8 offset=2 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if block $while-break|2 - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add - i32.load16_s + i32.load8_u local.set $3 i32.const 2 global.set $~argumentsLength @@ -30442,13 +28098,11 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add local.get $3 - i32.store16 offset=2 + i32.store8 offset=1 local.get $6 i32.const 1 i32.sub @@ -30457,13 +28111,11 @@ end end end - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add local.get $5 - i32.store16 offset=2 + i32.store8 offset=1 local.get $7 i32.const 2 i32.add @@ -30472,7 +28124,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -30483,21 +28135,17 @@ local.get $1 return end - local.get $1 - i32.const 1 - i32.shl local.get $0 + local.get $1 i32.add - i32.load16_s + i32.load8_u + local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 - i32.const 1 - i32.shl - local.get $0 i32.add - i32.load16_s + i32.load8_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -30511,15 +28159,13 @@ local.get $4 i32.gt_s if (result i32) - local.get $4 - i32.const 1 - i32.shl local.get $0 + local.get $4 i32.add local.tee $5 - i32.load16_s offset=2 + i32.load8_u offset=1 local.get $5 - i32.load16_s + i32.load8_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -30545,30 +28191,26 @@ local.get $2 i32.lt_s if - local.get $1 - i32.const 1 - i32.shl local.get $0 + local.get $1 i32.add local.tee $3 - i32.load16_s + i32.load8_u local.set $5 local.get $3 - local.get $2 - i32.const 1 - i32.shl local.get $0 + local.get $2 i32.add local.tee $3 - i32.load16_s - i32.store16 + i32.load8_u + i32.store8 local.get $1 i32.const 1 i32.add local.set $1 local.get $3 local.get $5 - i32.store16 + i32.store8 local.get $2 i32.const 1 i32.sub @@ -30582,15 +28224,13 @@ local.get $4 i32.gt_s if (result i32) - local.get $4 - i32.const 1 - i32.shl local.get $0 + local.get $4 i32.add local.tee $1 - i32.load16_s offset=2 + i32.load8_u offset=1 local.get $1 - i32.load16_s + i32.load8_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -30612,7 +28252,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -30637,15 +28277,12 @@ i32.const 1 i32.sub local.tee $2 - i32.const 1 - i32.shl - local.tee $8 i32.add local.get $0 - local.get $8 + local.get $2 i32.add - i32.load16_s - i32.store16 + i32.load8_u + i32.store8 br $for-loop|0 end end @@ -30657,17 +28294,13 @@ local.get $7 local.get $6 i32.sub - i32.const 1 - i32.shl local.get $4 i32.add - local.get $6 - i32.const 1 - i32.shl local.get $0 + local.get $6 i32.add - i32.load16_s offset=2 - i32.store16 + i32.load8_u offset=1 + i32.store8 local.get $6 i32.const 1 i32.add @@ -30680,49 +28313,41 @@ local.get $3 i32.le_s if - local.get $6 - i32.const 1 - i32.shl local.get $4 + local.get $6 i32.add - i32.load16_s - local.set $7 + i32.load8_u + local.set $8 local.get $2 - i32.const 1 - i32.shl local.get $4 i32.add - i32.load16_s - local.set $8 + i32.load8_u + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $1 - i32.const 1 - i32.shl local.get $0 + local.get $1 i32.add - local.get $7 - i32.store16 + local.get $8 + i32.store8 local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $1 - i32.const 1 - i32.shl local.get $0 + local.get $1 i32.add - local.get $8 - i32.store16 + local.get $7 + i32.store8 local.get $2 i32.const 1 i32.add @@ -30736,7 +28361,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30746,8 +28371,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -30771,82 +28396,83 @@ br $break|0 end local.get $0 - i32.load16_s - local.set $1 + i32.load8_u + local.set $5 local.get $0 - i32.load16_s offset=2 + i32.load8_u offset=1 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select - i32.store16 + i32.store8 local.get $0 - i32.load16_s offset=4 - local.set $5 + i32.load8_u offset=2 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 - select - i32.store16 offset=2 + local.set $1 local.get $0 + local.get $4 + local.get $3 local.get $1 - local.get $5 + select + i32.store8 offset=1 + local.get $0 local.get $3 + local.get $4 + local.get $1 select - i32.store16 offset=4 + i32.store8 offset=2 end local.get $0 - i32.load16_s - local.set $1 + i32.load8_u + local.set $4 local.get $0 - i32.load16_s offset=2 + i32.load8_u offset=1 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select - i32.store16 + i32.store8 local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select - i32.store16 offset=2 + i32.store8 offset=1 return end local.get $0 @@ -30856,50 +28482,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -30910,89 +28536,87 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 1 - i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 + call $~lib/util/sort/extendRunRight + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -31002,30 +28626,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -31034,16 +28658,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -31053,8 +28677,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -31062,15 +28686,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -31081,7 +28705,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -31093,15 +28717,15 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -31110,32 +28734,42 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.extend16_s + i32.const 255 + i32.and + local.tee $0 local.get $1 - i32.extend16_s + i32.const 255 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.extend16_s + i32.const 255 + i32.and local.tee $1 local.get $0 - i32.extend16_s + i32.const 255 + i32.and local.tee $0 - i32.gt_s + i32.gt_u local.get $0 local.get $1 - i32.gt_s + i32.gt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -31171,11 +28805,11 @@ local.get $0 i32.add local.tee $3 - i32.load16_u offset=2 + i32.load16_s offset=2 local.tee $6 local.set $5 local.get $3 - i32.load16_u + i32.load16_s local.set $3 i32.const 2 global.set $~argumentsLength @@ -31207,7 +28841,7 @@ i32.shl local.get $0 i32.add - i32.load16_u + i32.load16_s local.set $8 i32.const 2 global.set $~argumentsLength @@ -31252,7 +28886,7 @@ i32.shl local.get $0 i32.add - i32.load16_u + i32.load16_s local.set $3 i32.const 2 global.set $~argumentsLength @@ -31294,7 +28928,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -31310,7 +28944,7 @@ i32.shl local.get $0 i32.add - i32.load16_u + i32.load16_s local.get $1 i32.const 1 i32.add @@ -31319,7 +28953,7 @@ i32.shl local.get $0 i32.add - i32.load16_u + i32.load16_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -31339,9 +28973,9 @@ local.get $0 i32.add local.tee $5 - i32.load16_u offset=2 + i32.load16_s offset=2 local.get $5 - i32.load16_u + i32.load16_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -31373,7 +29007,7 @@ local.get $0 i32.add local.tee $3 - i32.load16_u + i32.load16_s local.set $5 local.get $3 local.get $2 @@ -31382,7 +29016,7 @@ local.get $0 i32.add local.tee $3 - i32.load16_u + i32.load16_s i32.store16 local.get $1 i32.const 1 @@ -31410,9 +29044,9 @@ local.get $0 i32.add local.tee $1 - i32.load16_u offset=2 + i32.load16_s offset=2 local.get $1 - i32.load16_u + i32.load16_s i32.const 2 global.set $~argumentsLength local.get $3 @@ -31434,7 +29068,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -31466,7 +29100,7 @@ local.get $0 local.get $8 i32.add - i32.load16_u + i32.load16_s i32.store16 br $for-loop|0 end @@ -31488,7 +29122,7 @@ i32.shl local.get $0 i32.add - i32.load16_u offset=2 + i32.load16_s offset=2 i32.store16 local.get $6 i32.const 1 @@ -31507,14 +29141,14 @@ i32.shl local.get $4 i32.add - i32.load16_u + i32.load16_s local.set $7 local.get $2 i32.const 1 i32.shl local.get $4 i32.add - i32.load16_u + i32.load16_s local.set $8 i32.const 2 global.set $~argumentsLength @@ -31558,7 +29192,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31568,8 +29202,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -31593,80 +29227,81 @@ br $break|0 end local.get $0 - i32.load16_u - local.set $1 + i32.load16_s + local.set $5 local.get $0 - i32.load16_u offset=2 + i32.load16_s offset=2 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store16 local.get $0 - i32.load16_u offset=4 - local.set $5 + i32.load16_s offset=4 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store16 offset=2 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store16 offset=4 end local.get $0 - i32.load16_u - local.set $1 + i32.load16_s + local.set $4 local.get $0 - i32.load16_u offset=2 + i32.load16_s offset=2 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store16 local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store16 offset=2 return @@ -31678,50 +29313,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -31737,84 +29372,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 + call $~lib/util/sort/extendRunRight + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -31824,30 +29459,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -31856,16 +29491,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -31875,8 +29510,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -31884,15 +29519,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -31903,7 +29538,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -31915,15 +29550,15 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -31932,42 +29567,32 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.gt_u + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 + i32.extend16_s local.get $1 - i32.lt_u + i32.extend16_s i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 65535 - i32.and + i32.extend16_s local.tee $1 local.get $0 - i32.const 65535 - i32.and + i32.extend16_s local.tee $0 - i32.gt_u + i32.gt_s local.get $0 local.get $1 - i32.gt_u + i32.gt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -31998,16 +29623,16 @@ i32.ge_s if local.get $7 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.tee $3 - i32.load offset=4 + i32.load16_u offset=2 local.tee $6 local.set $5 local.get $3 - i32.load + i32.load16_u local.set $3 i32.const 2 global.set $~argumentsLength @@ -32035,11 +29660,11 @@ if block $while-break|1 local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add - i32.load + i32.load16_u local.set $8 i32.const 2 global.set $~argumentsLength @@ -32052,12 +29677,12 @@ i32.le_s br_if $while-break|1 local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $8 - i32.store offset=8 + i32.store16 offset=4 local.get $6 i32.const 1 i32.sub @@ -32067,12 +29692,12 @@ end end local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $3 - i32.store offset=8 + i32.store16 offset=4 loop $while-continue|2 local.get $1 local.get $6 @@ -32080,11 +29705,11 @@ if block $while-break|2 local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add - i32.load + i32.load16_u local.set $3 i32.const 2 global.set $~argumentsLength @@ -32097,12 +29722,12 @@ i32.le_s br_if $while-break|2 local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $3 - i32.store offset=4 + i32.store16 offset=2 local.get $6 i32.const 1 i32.sub @@ -32112,12 +29737,12 @@ end end local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $5 - i32.store offset=4 + i32.store16 offset=2 local.get $7 i32.const 2 i32.add @@ -32126,7 +29751,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -32138,20 +29763,20 @@ return end local.get $1 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add - i32.load + i32.load16_u local.get $1 i32.const 1 i32.add local.tee $4 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add - i32.load + i32.load16_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -32166,14 +29791,14 @@ i32.gt_s if (result i32) local.get $4 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.tee $5 - i32.load offset=4 + i32.load16_u offset=2 local.get $5 - i32.load + i32.load16_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -32200,29 +29825,29 @@ i32.lt_s if local.get $1 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.tee $3 - i32.load + i32.load16_u local.set $5 local.get $3 local.get $2 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.tee $3 - i32.load - i32.store + i32.load16_u + i32.store16 local.get $1 i32.const 1 i32.add local.set $1 local.get $3 local.get $5 - i32.store + i32.store16 local.get $2 i32.const 1 i32.sub @@ -32237,14 +29862,14 @@ i32.gt_s if (result i32) local.get $4 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.tee $1 - i32.load offset=4 + i32.load16_u offset=2 local.get $1 - i32.load + i32.load16_u i32.const 2 global.set $~argumentsLength local.get $3 @@ -32266,7 +29891,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -32291,15 +29916,15 @@ i32.const 1 i32.sub local.tee $2 - i32.const 2 + i32.const 1 i32.shl local.tee $8 i32.add local.get $0 local.get $8 i32.add - i32.load - i32.store + i32.load16_u + i32.store16 br $for-loop|0 end end @@ -32311,17 +29936,17 @@ local.get $7 local.get $6 i32.sub - i32.const 2 + i32.const 1 i32.shl local.get $4 i32.add local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add - i32.load offset=4 - i32.store + i32.load16_u offset=2 + i32.store16 local.get $6 i32.const 1 i32.add @@ -32335,18 +29960,18 @@ i32.le_s if local.get $6 - i32.const 2 + i32.const 1 i32.shl local.get $4 i32.add - i32.load + i32.load16_u local.set $7 local.get $2 - i32.const 2 + i32.const 1 i32.shl local.get $4 i32.add - i32.load + i32.load16_u local.set $8 i32.const 2 global.set $~argumentsLength @@ -32359,24 +29984,24 @@ i32.lt_s if local.get $1 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $7 - i32.store + i32.store16 local.get $6 i32.const 1 i32.sub local.set $6 else local.get $1 - i32.const 2 + i32.const 1 i32.shl local.get $0 i32.add local.get $8 - i32.store + i32.store16 local.get $2 i32.const 1 i32.add @@ -32390,7 +30015,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -32400,8 +30025,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -32425,82 +30050,83 @@ br $break|0 end local.get $0 - i32.load - local.set $1 + i32.load16_u + local.set $5 local.get $0 - i32.load offset=4 + i32.load16_u offset=2 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select - i32.store + i32.store16 local.get $0 - i32.load offset=8 - local.set $5 + i32.load16_u offset=4 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 - select - i32.store offset=4 + local.set $1 local.get $0 + local.get $4 + local.get $3 local.get $1 - local.get $5 + select + i32.store16 offset=2 + local.get $0 local.get $3 + local.get $4 + local.get $1 select - i32.store offset=8 + i32.store16 offset=4 end local.get $0 - i32.load - local.set $1 + i32.load16_u + local.set $4 local.get $0 - i32.load offset=4 + i32.load16_u offset=2 local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select - i32.store + i32.store16 local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select - i32.store offset=4 + i32.store16 offset=2 return end local.get $0 @@ -32510,50 +30136,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -32564,89 +30190,89 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 2 + i32.const 1 i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 + call $~lib/util/sort/extendRunRight + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -32656,30 +30282,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -32688,16 +30314,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -32707,8 +30333,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -32716,15 +30342,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -32735,7 +30361,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -32747,15 +30373,15 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -32764,26 +30390,42 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.gt_u local.get $0 local.get $1 + i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 + (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.lt_s + i32.const 65535 + i32.and + local.tee $1 + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + i32.gt_u local.get $0 local.get $1 - i32.gt_s + i32.gt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -32942,7 +30584,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -33082,7 +30724,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -33206,7 +30848,7 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -33216,8 +30858,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -33242,7 +30884,7 @@ end local.get $0 i32.load - local.set $1 + local.set $5 local.get $0 i32.load offset=4 local.set $3 @@ -33250,49 +30892,50 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $5 + local.get $5 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store local.get $0 i32.load offset=8 - local.set $5 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $1 local.get $3 - local.get $4 - select - local.tee $1 local.get $1 - local.get $5 + select + local.tee $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $5 local.get $3 + local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $4 local.get $0 i32.load offset=4 local.set $3 @@ -33300,21 +30943,21 @@ global.set $~argumentsLength local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 return @@ -33326,50 +30969,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 + local.tee $10 local.get $7 i32.add - local.set $10 + local.set $11 loop $for-loop|1 - local.get $5 local.get $6 + local.get $8 i32.lt_u if - local.get $5 + local.get $6 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|1 end end @@ -33385,84 +31028,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $1 + call $~lib/util/sort/extendRunRight + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $5 - local.get $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $8 - local.get $6 + local.get $5 + local.get $9 + local.get $5 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -33472,30 +31115,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 loop $for-loop|3 + local.get $1 local.get $4 - local.get $7 - i32.gt_u + i32.lt_u if local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load - local.tee $13 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 + local.get $8 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -33504,16 +31147,16 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $8 local.set $3 end local.get $4 @@ -33523,8 +31166,8 @@ br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -33532,15 +31175,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store - local.get $6 - local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $3 + local.get $6 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -33551,7 +31194,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $10 i32.add i32.load local.tee $1 @@ -33563,15 +31206,15 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -33580,47 +31223,43 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.lt_u + i32.lt_s local.get $0 local.get $1 - i32.gt_u + i32.gt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i64) - (local $6 i64) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $7 + local.get $5 i32.const 1 i32.and local.get $3 @@ -33634,126 +31273,126 @@ i32.ge_s if local.get $7 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.tee $3 - i64.load offset=8 - local.tee $8 - local.set $6 - local.get $3 - i64.load + i32.load offset=4 + local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $8 + local.get $3 + local.get $6 local.get $4 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s if - local.get $5 - local.set $6 - local.get $8 + local.get $3 local.set $5 + local.get $6 + local.set $3 end local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $6 loop $while-continue|1 local.get $1 - local.get $3 + local.get $6 i32.le_s if block $while-break|1 - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add - i64.load + i32.load local.set $8 i32.const 2 global.set $~argumentsLength local.get $8 - local.get $5 + local.get $3 local.get $4 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s br_if $while-break|1 - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add local.get $8 - i64.store offset=16 - local.get $3 + i32.store offset=8 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|1 end end end - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add - local.get $5 - i64.store offset=16 + local.get $3 + i32.store offset=8 loop $while-continue|2 local.get $1 - local.get $3 + local.get $6 i32.le_s if block $while-break|2 - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add - i64.load - local.set $5 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength + local.get $3 local.get $5 - local.get $6 local.get $4 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s br_if $while-break|2 - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add - local.get $5 - i64.store offset=8 local.get $3 + i32.store offset=4 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|2 end end end - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl local.get $0 i32.add - local.get $6 - i64.store offset=8 + local.get $5 + i32.store offset=4 local.get $7 i32.const 2 i32.add @@ -33762,11 +31401,10 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) - (local $7 i64) local.get $1 local.get $2 i32.eq @@ -33775,25 +31413,25 @@ return end local.get $1 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add - i64.load + i32.load local.get $1 i32.const 1 i32.add local.tee $4 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add - i64.load + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -33803,19 +31441,19 @@ i32.gt_s if (result i32) local.get $4 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u else @@ -33837,29 +31475,29 @@ i32.lt_s if local.get $1 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.tee $3 - i64.load + i32.load local.set $5 local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.tee $3 - i64.load - i64.store + i32.load + i32.store local.get $1 i32.const 1 i32.add local.set $1 local.get $3 local.get $5 - i64.store + i32.store local.get $2 i32.const 1 i32.sub @@ -33874,19 +31512,19 @@ i32.gt_s if (result i32) local.get $4 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.tee $1 - i64.load offset=8 + i32.load offset=4 local.get $1 - i64.load + i32.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s else @@ -33903,19 +31541,17 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) + (local $7 i32) + (local $8 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $9 + local.set $7 local.get $6 i32.const 1 i32.add @@ -33930,15 +31566,15 @@ i32.const 1 i32.sub local.tee $2 - i32.const 3 + i32.const 2 i32.shl - local.tee $10 + local.tee $8 i32.add local.get $0 - local.get $10 + local.get $8 i32.add - i64.load - i64.store + i32.load + i32.store br $for-loop|0 end end @@ -33947,20 +31583,20 @@ local.get $6 i32.gt_s if - local.get $9 + local.get $7 local.get $6 i32.sub - i32.const 3 + i32.const 2 i32.shl local.get $4 i32.add local.get $6 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add - i64.load offset=8 - i64.store + i32.load offset=4 + i32.store local.get $6 i32.const 1 i32.add @@ -33974,18 +31610,18 @@ i32.le_s if local.get $6 - i32.const 3 + i32.const 2 i32.shl local.get $4 i32.add - i64.load + i32.load local.set $7 local.get $2 - i32.const 3 + i32.const 2 i32.shl local.get $4 i32.add - i64.load + i32.load local.set $8 i32.const 2 global.set $~argumentsLength @@ -33993,29 +31629,29 @@ local.get $8 local.get $5 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if local.get $1 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.get $7 - i64.store + i32.store local.get $6 i32.const 1 i32.sub local.set $6 else local.get $1 - i32.const 3 + i32.const 2 i32.shl local.get $0 i32.add local.get $8 - i64.store + i32.store local.get $2 i32.const 1 i32.add @@ -34029,20 +31665,18 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i64) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -34066,82 +31700,83 @@ br $break|0 end local.get $0 - i64.load - local.set $11 + i32.load + local.set $5 local.get $0 - i64.load offset=8 - local.set $10 + i32.load offset=4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $3 + local.get $5 + local.get $5 + local.get $3 local.get $2 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s local.tee $1 select - i64.store + i32.store local.get $0 - i64.load offset=16 - local.set $9 + i32.load offset=8 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $5 + local.get $3 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $3 + local.get $4 local.get $2 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $4 + local.get $3 + local.get $1 select - i64.store offset=8 + i32.store offset=4 local.get $0 - local.get $10 - local.get $9 + local.get $3 + local.get $4 local.get $1 select - i64.store offset=16 + i32.store offset=8 end local.get $0 - i64.load - local.set $10 + i32.load + local.set $4 local.get $0 - i64.load offset=8 - local.set $9 + i32.load offset=4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $3 + local.get $4 + local.get $4 + local.get $3 local.get $2 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s local.tee $1 select - i64.store + i32.store local.get $0 - local.get $10 - local.get $9 + local.get $4 + local.get $3 local.get $1 select - i64.store offset=8 + i32.store offset=4 return end local.get $0 @@ -34151,7 +31786,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 @@ -34175,10 +31810,10 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 local.get $6 local.get $8 @@ -34187,7 +31822,7 @@ local.get $6 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store @@ -34205,20 +31840,20 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 3 + i32.const 2 i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.tee $7 i32.const 1 i32.add @@ -34228,20 +31863,20 @@ if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select local.tee $7 local.get $1 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $7 - local.get $12 + local.get $9 i32.lt_s if local.get $0 @@ -34249,9 +31884,9 @@ i32.const 1 i32.add local.tee $5 - local.get $12 + local.get $9 local.get $2 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.tee $6 local.get $5 i32.sub @@ -34263,19 +31898,19 @@ if local.get $0 local.get $5 - local.get $12 + local.get $9 local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $12 + local.get $9 i32.gt_s select local.tee $6 local.get $8 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 local.get $5 @@ -34283,11 +31918,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -34297,7 +31932,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $13 i64.div_u i64.xor i32.wrap_i64 @@ -34311,7 +31946,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $8 @@ -34320,7 +31955,7 @@ if local.get $0 local.get $8 - local.get $14 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -34330,11 +31965,11 @@ i32.const 1 i32.add local.get $7 - local.get $15 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store @@ -34348,7 +31983,7 @@ br $for-loop|3 end end - local.get $13 + local.get $10 local.get $1 i32.const 2 i32.shl @@ -34357,7 +31992,7 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add local.get $7 i32.store @@ -34376,7 +32011,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -34388,15 +32023,15 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -34405,30 +32040,30 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i64.gt_s + i32.gt_u local.get $0 local.get $1 - i64.lt_s + i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i64.lt_s + i32.lt_u local.get $0 local.get $1 - i64.gt_s + i32.gt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i64) (local $6 i64) (local $7 i32) @@ -34587,7 +32222,7 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i64) (local $6 i32) @@ -34728,7 +32363,7 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i64) (local $8 i64) @@ -34854,19 +32489,19 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) + (local $13 i64) + (local $14 i64) (local $15 i32) local.get $1 i32.const 48 @@ -34892,17 +32527,17 @@ end local.get $0 i64.load - local.set $11 + local.set $13 local.get $0 i64.load offset=8 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34913,46 +32548,47 @@ i64.store local.get $0 i64.load offset=16 - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $13 + local.get $14 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $13 + local.get $8 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $13 + local.get $1 select i64.store offset=8 local.get $0 - local.get $10 - local.get $9 + local.get $13 + local.get $8 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $10 + local.set $8 local.get $0 i64.load offset=8 - local.set $9 + local.set $13 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $13 + local.get $8 + local.get $8 + local.get $13 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34962,8 +32598,8 @@ select i64.store local.get $0 - local.get $10 - local.get $9 + local.get $8 + local.get $13 local.get $1 select i64.store offset=8 @@ -34976,50 +32612,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $8 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $5 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 + local.get $5 local.get $6 - local.get $8 i32.lt_u if - local.get $6 + local.get $5 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -35035,84 +32671,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $7 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $12 + local.get $1 + local.get $9 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $6 - local.get $5 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $12 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u local.get $5 local.get $6 @@ -35122,30 +32758,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 + local.set $7 loop $for-loop|3 - local.get $1 local.get $4 - i32.lt_u + local.get $7 + i32.gt_u if local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load - local.tee $8 + local.tee $15 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $14 + local.get $15 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -35154,16 +32790,16 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $15 + local.get $1 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $8 + local.get $15 local.set $3 end local.get $4 @@ -35173,8 +32809,8 @@ br $for-loop|3 end end - local.get $13 - local.get $1 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -35182,15 +32818,15 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add - local.get $7 + local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 - local.set $7 - local.get $1 + local.set $3 + local.get $5 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -35201,7 +32837,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -35213,15 +32849,15 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -35230,34 +32866,34 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - i64.gt_u + i64.gt_s local.get $0 local.get $1 - i64.lt_u + i64.lt_s i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - i64.lt_u + i64.lt_s local.get $0 local.get $1 - i64.gt_u + i64.gt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f32) - (local $6 f32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) (local $7 i32) - (local $8 f32) + (local $8 i64) local.get $3 local.get $2 local.get $1 @@ -35284,16 +32920,16 @@ i32.ge_s if local.get $7 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.tee $3 - f32.load offset=4 + i64.load offset=8 local.tee $8 local.set $6 local.get $3 - f32.load + i64.load local.set $5 i32.const 2 global.set $~argumentsLength @@ -35301,7 +32937,7 @@ local.get $8 local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.le_s if @@ -35321,11 +32957,11 @@ if block $while-break|1 local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add - f32.load + i64.load local.set $8 i32.const 2 global.set $~argumentsLength @@ -35333,17 +32969,17 @@ local.get $5 local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.le_s br_if $while-break|1 local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $8 - f32.store offset=8 + i64.store offset=16 local.get $3 i32.const 1 i32.sub @@ -35353,12 +32989,12 @@ end end local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $5 - f32.store offset=8 + i64.store offset=16 loop $while-continue|2 local.get $1 local.get $3 @@ -35366,11 +33002,11 @@ if block $while-break|2 local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add - f32.load + i64.load local.set $5 i32.const 2 global.set $~argumentsLength @@ -35378,17 +33014,17 @@ local.get $6 local.get $4 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.le_s br_if $while-break|2 local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $5 - f32.store offset=4 + i64.store offset=8 local.get $3 i32.const 1 i32.sub @@ -35398,12 +33034,12 @@ end end local.get $3 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $6 - f32.store offset=4 + i64.store offset=8 local.get $7 i32.const 2 i32.add @@ -35412,11 +33048,11 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 f32) + (local $5 i64) (local $6 i32) - (local $7 f32) + (local $7 i64) local.get $1 local.get $2 i32.eq @@ -35425,25 +33061,25 @@ return end local.get $1 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add - f32.load + i64.load local.get $1 i32.const 1 i32.add local.tee $4 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add - f32.load + i64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s if @@ -35453,19 +33089,19 @@ i32.gt_s if (result i32) local.get $4 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.tee $6 - f32.load offset=4 + i64.load offset=8 local.get $6 - f32.load + i64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u else @@ -35487,29 +33123,29 @@ i32.lt_s if local.get $1 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.tee $3 - f32.load + i64.load local.set $5 local.get $3 local.get $2 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.tee $3 - f32.load - f32.store + i64.load + i64.store local.get $1 i32.const 1 i32.add local.set $1 local.get $3 local.get $5 - f32.store + i64.store local.get $2 i32.const 1 i32.sub @@ -35524,19 +33160,19 @@ i32.gt_s if (result i32) local.get $4 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.tee $1 - f32.load offset=4 + i64.load offset=8 local.get $1 - f32.load + i64.load i32.const 2 global.set $~argumentsLength local.get $3 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.ge_s else @@ -35553,10 +33189,10 @@ end local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f32) + (local $7 i64) + (local $8 i64) (local $9 i32) (local $10 i32) local.get $3 @@ -35580,15 +33216,15 @@ i32.const 1 i32.sub local.tee $2 - i32.const 2 + i32.const 3 i32.shl local.tee $10 i32.add local.get $0 local.get $10 i32.add - f32.load - f32.store + i64.load + i64.store br $for-loop|0 end end @@ -35600,17 +33236,17 @@ local.get $9 local.get $6 i32.sub - i32.const 2 + i32.const 3 i32.shl local.get $4 i32.add local.get $6 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add - f32.load offset=4 - f32.store + i64.load offset=8 + i64.store local.get $6 i32.const 1 i32.add @@ -35624,18 +33260,18 @@ i32.le_s if local.get $6 - i32.const 2 + i32.const 3 i32.shl local.get $4 i32.add - f32.load + i64.load local.set $7 local.get $2 - i32.const 2 + i32.const 3 i32.shl local.get $4 i32.add - f32.load + i64.load local.set $8 i32.const 2 global.set $~argumentsLength @@ -35643,29 +33279,29 @@ local.get $8 local.get $5 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.lt_s if local.get $1 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $7 - f32.store + i64.store local.get $6 i32.const 1 i32.sub local.set $6 else local.get $1 - i32.const 2 + i32.const 3 i32.shl local.get $0 i32.add local.get $8 - f32.store + i64.store local.get $2 i32.const 1 i32.add @@ -35679,21 +33315,20 @@ end end ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f32) - (local $11 f32) + (local $8 i64) + (local $9 i32) + (local $10 i32) + (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) + (local $13 i64) + (local $14 i64) (local $15 i32) - (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -35717,82 +33352,83 @@ br $break|0 end local.get $0 - f32.load - local.set $11 + i64.load + local.set $13 local.get $0 - f32.load offset=4 - local.set $10 + i64.load offset=8 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $10 - local.get $11 - local.get $11 - local.get $10 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s local.tee $1 select - f32.store + i64.store local.get $0 - f32.load offset=8 - local.set $9 + i64.load offset=16 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $10 + local.get $13 + local.get $14 local.get $1 select - local.tee $10 - local.get $10 - local.get $9 + local.tee $13 + local.get $8 local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.set $1 + local.get $0 + local.get $8 + local.get $13 + local.get $1 select - f32.store offset=4 + i64.store offset=8 local.get $0 - local.get $10 - local.get $9 + local.get $13 + local.get $8 local.get $1 select - f32.store offset=8 + i64.store offset=16 end local.get $0 - f32.load - local.set $10 + i64.load + local.set $8 local.get $0 - f32.load offset=4 - local.set $9 + i64.load offset=8 + local.set $13 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 - local.get $10 - local.get $10 - local.get $9 + local.get $13 + local.get $8 + local.get $8 + local.get $13 local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s local.tee $1 select - f32.store + i64.store local.get $0 - local.get $10 - local.get $9 + local.get $8 + local.get $13 local.get $1 select - f32.store offset=4 + i64.store offset=8 return end local.get $0 @@ -35802,50 +33438,50 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort return end i32.const 33 local.get $1 i32.clz i32.sub - local.tee $8 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $5 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 local.get $7 i32.add - local.set $14 + local.set $11 loop $for-loop|1 + local.get $5 local.get $6 - local.get $8 i32.lt_u if - local.get $6 + local.get $5 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -35856,89 +33492,89 @@ end global.get $~lib/rt/tlsf/ROOT local.get $1 - i32.const 2 + i32.const 3 i32.shl call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $12 + local.tee $9 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $7 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $9 i32.const 31 - local.get $12 + local.get $9 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $12 + local.get $1 + local.get $9 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 - local.get $2 - call $~lib/util/sort/extendRunRight local.tee $6 - local.get $5 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $12 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $8 i64.div_u local.get $5 local.get $6 @@ -35948,30 +33584,30 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 + local.set $7 loop $for-loop|3 - local.get $1 local.get $4 - i32.lt_u + local.get $7 + i32.gt_u if local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load - local.tee $8 + local.tee $15 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $14 + local.get $15 + local.get $11 local.get $4 i32.const 2 i32.shl @@ -35980,16 +33616,16 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $15 + local.get $1 + local.get $12 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $10 i32.add i32.const -1 i32.store - local.get $8 + local.get $15 local.set $3 end local.get $4 @@ -35999,8 +33635,8 @@ br $for-loop|3 end end - local.get $13 - local.get $1 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -36008,15 +33644,15 @@ local.get $3 i32.store local.get $4 - local.get $14 + local.get $11 i32.add - local.get $7 + local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 - local.set $7 - local.get $1 + local.set $3 + local.get $5 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -36027,7 +33663,7 @@ local.get $4 i32.const 2 i32.shl - local.get $13 + local.get $10 i32.add i32.load local.tee $1 @@ -36039,15 +33675,15 @@ local.get $4 i32.const 2 i32.shl - local.get $14 + local.get $11 i32.add i32.load i32.const 1 i32.add + local.get $9 local.get $12 - local.get $15 local.get $2 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -36056,1008 +33692,924 @@ br $for-loop|4 end end - local.get $15 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $3 - i32.xor - local.tee $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - f32.lt + i64.gt_u local.get $0 local.get $1 - f32.gt + i64.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - f64.lt + i64.lt_u local.get $0 local.get $1 - f64.gt + i64.gt_u i32.sub ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner3 $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-inner2 $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-inner2 $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-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:std/typedarray - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + (local $8 f32) + local.get $3 + local.get $2 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $7 - i32.load offset=8 - local.set $2 - local.get $3 - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + local.get $1 + i32.add + local.set $7 + loop $for-loop|0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 local.get $7 - i32.load offset=4 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s + i32.ge_s + if + local.get $7 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s if - local.get $1 local.get $5 - i32.add - i32.load8_s - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 local.get $1 - local.get $7 - i32.const 3952 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $3 + i32.le_s if - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 + block $while-break|1 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end - local.get $8 - local.get $6 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $1 - i32.store - local.get $1 - if - local.get $8 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $8 - local.get $0 - i32.store offset=8 - local.get $8 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.get $8 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $7 - i32.load offset=8 + (local $7 f32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 local.set $2 - local.get $3 - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $7 - i32.load offset=4 - local.set $5 - loop $for-loop|0 + loop $while-continue|1 local.get $1 local.get $2 i32.lt_s if local.get $1 - local.get $5 + i32.const 2 + i32.shl + local.get $0 i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength + local.tee $3 + f32.load + local.set $5 local.get $3 - local.get $1 - local.get $7 - i32.const 3984 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $3 + f32.load + f32.store local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end end - local.get $8 - local.get $6 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $1 - i32.store - local.get $1 - if - local.get $8 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $8 - local.get $0 - i32.store offset=8 - local.get $8 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.get $8 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $3 + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 + local.tee $6 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $7 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $7 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $7 - i32.load offset=8 - local.set $2 + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 local.get $3 - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $7 - i32.load offset=4 - local.set $5 - loop $for-loop|0 - local.get $1 + local.get $6 + i32.gt_s + if + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $6 + i32.const 2 + i32.shl + local.get $4 + i32.add + f32.load + local.set $7 local.get $2 + i32.const 2 + i32.shl + local.get $4 + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 i32.lt_s if local.get $1 - local.get $5 + i32.const 2 + i32.shl + local.get $0 i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $1 local.get $7 - i32.const 4016 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $8 + f32.store + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $2 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - local.get $8 - local.get $6 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $1 - i32.store + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 f32) + (local $15 f32) + (local $16 i32) + local.get $1 + i32.const 48 + i32.le_s + if local.get $1 + i32.const 1 + i32.le_s if + return + end + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $14 + local.get $0 + f32.load offset=4 + local.set $15 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $15 + local.get $14 + local.get $14 + local.get $15 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $14 + local.get $15 + local.get $1 + select + local.tee $14 + local.get $8 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + local.set $1 + local.get $0 + local.get $8 + local.get $14 + local.get $1 + select + f32.store offset=4 + local.get $0 + local.get $14 + local.get $8 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $8 + local.get $0 + f32.load offset=4 + local.set $14 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $8 local.get $8 + local.get $14 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $8 + local.get $14 local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link + select + f32.store offset=4 + return end - local.get $8 local.get $0 - i32.store offset=8 - local.get $8 + i32.const 0 local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.get $8 - i32.load + i32.const 1 i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + call $~lib/util/sort/insertionSort return end - i32.const 33040 - i32.const 33088 + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $7 i32.const 1 + i32.shl + local.set $9 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + local.get $7 + i32.add + local.set $11 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_u + if + local.get $5 + i32.const 2 + i32.shl + local.get $10 + i32.add + i32.const -1 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + local.get $0 + i32.const 0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $7 - i32.store - local.get $7 + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $5 + i32.const 32 + i32.lt_s + if + local.get $0 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $7 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $7 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 + local.get $9 + i32.const 31 + local.get $9 + i32.const 31 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $7 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - local.get $3 - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer + select + local.tee $1 + local.get $5 local.get $2 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $7 - i32.load offset=4 - local.set $6 - loop $for-loop|0 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $0 local.get $1 + i32.const 1 + i32.add + local.tee $6 + local.get $9 local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 i32.lt_s if - local.get $1 - i32.const 1 - i32.shl + local.get $0 local.get $6 + local.get $9 + local.get $6 + i32.const 31 i32.add - i32.load16_s - local.set $4 - i32.const 3 - global.set $~argumentsLength + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 local.get $4 - local.get $1 local.get $7 - i32.const 4048 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.gt_u if - local.get $0 - i32.const 1 + local.get $4 + i32.const 2 i32.shl - local.get $3 + local.get $10 i32.add + i32.load + local.tee $16 + i32.const -1 + i32.ne + if + local.get $0 + local.get $16 + local.get $11 + local.get $4 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $10 + i32.add + i32.const -1 + i32.store + local.get $16 + local.set $3 + end local.get $4 - i32.store16 - local.get $0 i32.const 1 - i32.add - local.set $0 + i32.sub + local.set $4 + br $for-loop|3 end + end + local.get $10 + local.get $7 + i32.const 2 + i32.shl + local.tee $4 + i32.add + local.get $3 + i32.store + local.get $4 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $4 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $4 + if + local.get $4 + i32.const 2 + i32.shl + local.get $10 + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 local.get $1 + local.get $4 + i32.const 2 + i32.shl + local.get $11 + i32.add + i32.load i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|4 end - local.get $8 - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $1 - i32.store - local.get $1 - if - local.get $8 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + f32.lt + local.get $0 + local.get $1 + f32.gt + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + local.get $0 + local.get $1 + f64.lt + local.get $0 + local.get $1 + f64.gt + i32.sub + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner3 $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-inner2 $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-inner2 $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-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid + end + return + end + return + end + unreachable end - local.get $8 local.get $0 - i32.store offset=8 - local.get $8 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 i32.load offset=4 - local.get $8 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne + local.tee $0 if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer return end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + (func $~start + call $start:std/typedarray + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37085,32 +34637,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int8Array#__set local.get $7 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int8Array#__set local.get $7 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int8Array#__set local.get $7 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int8Array#__set local.get $7 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4080 + i32.const 3952 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -37126,54 +34678,46 @@ i64.store local.get $7 i32.load offset=8 - i32.const 1 - i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 7 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 1 - i32.shl - local.get $6 + local.get $5 i32.add - i32.load16_u - local.set $4 + i32.load8_s + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4080 + i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 1 - i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - i32.store16 + local.get $3 + i32.store8 local.get $0 i32.const 1 i32.add @@ -37186,36 +34730,33 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 1 - i32.shl - local.tee $0 call $~lib/rt/itcms/__renew local.tee $1 i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -37226,10 +34767,8 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 1 - i32.shr_u i32.const 3 i32.ne if @@ -37240,9 +34779,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne if @@ -37253,9 +34792,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne if @@ -37266,9 +34805,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 5 i32.ne if @@ -37292,7 +34831,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37320,32 +34859,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Uint8Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8Array#__set local.get $7 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8Array#__set local.get $7 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8Array#__set local.get $7 i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8Array#__set local.get $7 i32.const 5 i32.const 5 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4112 + i32.const 3984 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -37361,54 +34900,46 @@ i64.store local.get $7 i32.load offset=8 - i32.const 2 - i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 8 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 2 - i32.shl - local.get $6 + local.get $5 i32.add - i32.load - local.set $4 + i32.load8_u + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4112 + i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 2 - i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - i32.store + local.get $3 + i32.store8 local.get $0 i32.const 1 i32.add @@ -37421,36 +34952,33 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 2 - i32.shl - local.tee $0 call $~lib/rt/itcms/__renew local.tee $1 i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -37461,10 +34989,8 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 2 - i32.shr_u i32.const 3 i32.ne if @@ -37475,9 +35001,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne if @@ -37488,9 +35014,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne if @@ -37501,9 +35027,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 5 i32.ne if @@ -37527,7 +35053,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37555,32 +35081,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $7 i32.store local.get $7 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $7 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $7 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $7 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $7 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4144 + i32.const 4016 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -37596,54 +35122,46 @@ i64.store local.get $7 i32.load offset=8 - i32.const 2 - i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 9 + i32.const 5 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 2 - i32.shl - local.get $6 + local.get $5 i32.add - i32.load - local.set $4 + i32.load8_u + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4144 + i32.const 4016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 2 - i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - i32.store + local.get $3 + i32.store8 local.get $0 i32.const 1 i32.add @@ -37656,36 +35174,33 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 2 - i32.shl - local.tee $0 call $~lib/rt/itcms/__renew local.tee $1 i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -37696,10 +35211,8 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 2 - i32.shr_u i32.const 3 i32.ne if @@ -37710,9 +35223,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne if @@ -37723,9 +35236,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne if @@ -37736,9 +35249,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne if @@ -37762,12 +35275,12 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -37790,32 +35303,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set + i32.const 1 + call $~lib/typedarray/Int16Array#__set local.get $7 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set + i32.const 2 + call $~lib/typedarray/Int16Array#__set local.get $7 i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set + i32.const 3 + call $~lib/typedarray/Int16Array#__set local.get $7 i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set + i32.const 4 + call $~lib/typedarray/Int16Array#__set local.get $7 i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set + i32.const 5 + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4176 + i32.const 4048 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -37831,54 +35344,54 @@ i64.store local.get $7 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 10 + i32.const 6 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 3 + i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add - i64.load - local.set $4 + i32.load16_s + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4176 + i32.const 4048 i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 3 + i32.const 1 i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - i64.store + local.get $3 + i32.store16 local.get $0 i32.const 1 i32.add @@ -37891,10 +35404,10 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 3 + i32.const 1 i32.shl local.tee $0 call $~lib/rt/itcms/__renew @@ -37902,25 +35415,25 @@ i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -37931,9 +35444,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.const 3 i32.ne @@ -37945,11 +35458,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 @@ -37958,11 +35471,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne if i32.const 0 i32.const 1568 @@ -37971,11 +35484,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne if i32.const 0 i32.const 1568 @@ -37997,12 +35510,12 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -38025,32 +35538,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set + i32.const 1 + call $~lib/typedarray/Uint16Array#__set local.get $7 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set + i32.const 2 + call $~lib/typedarray/Uint16Array#__set local.get $7 i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + i32.const 3 + call $~lib/typedarray/Uint16Array#__set local.get $7 i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set + i32.const 4 + call $~lib/typedarray/Uint16Array#__set local.get $7 i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set + i32.const 5 + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4208 + i32.const 4080 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -38066,54 +35579,54 @@ i64.store local.get $7 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 11 + i32.const 7 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 3 + i32.const 1 i32.shl - local.get $6 + local.get $5 i32.add - i64.load - local.set $4 + i32.load16_u + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4208 + i32.const 4080 i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 3 + i32.const 1 i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - i64.store + local.get $3 + i32.store16 local.get $0 i32.const 1 i32.add @@ -38126,10 +35639,10 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 3 + i32.const 1 i32.shl local.tee $0 call $~lib/rt/itcms/__renew @@ -38137,25 +35650,25 @@ i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -38166,9 +35679,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.const 3 i32.ne @@ -38180,11 +35693,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 @@ -38193,11 +35706,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne if i32.const 0 i32.const 1568 @@ -38206,11 +35719,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne if i32.const 0 i32.const 1568 @@ -38232,12 +35745,12 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -38260,32 +35773,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set + i32.const 1 + call $~lib/typedarray/Int32Array#__set local.get $7 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set + i32.const 2 + call $~lib/typedarray/Int32Array#__set local.get $7 i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + i32.const 3 + call $~lib/typedarray/Int32Array#__set local.get $7 i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set + i32.const 4 + call $~lib/typedarray/Int32Array#__set local.get $7 i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set + i32.const 5 + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4240 + i32.const 4112 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -38306,9 +35819,9 @@ local.set $2 local.get $3 i32.const 12 - i32.const 12 + i32.const 8 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -38316,11 +35829,11 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 @@ -38329,26 +35842,26 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - f32.load - local.set $4 + i32.load + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4240 + i32.const 4112 i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - f32.store + local.get $3 + i32.store local.get $0 i32.const 1 i32.add @@ -38361,8 +35874,8 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 i32.const 2 i32.shl @@ -38372,25 +35885,25 @@ i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -38401,7 +35914,7 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u @@ -38415,11 +35928,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 @@ -38428,11 +35941,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne if i32.const 0 i32.const 1568 @@ -38441,11 +35954,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne if i32.const 0 i32.const 1568 @@ -38467,12 +35980,12 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -38495,32 +36008,32 @@ i32.store offset=8 local.get $2 i32.const 6 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $7 i32.store local.get $7 i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set + i32.const 1 + call $~lib/typedarray/Uint32Array#__set local.get $7 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set + i32.const 2 + call $~lib/typedarray/Uint32Array#__set local.get $7 i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set + i32.const 3 + call $~lib/typedarray/Uint32Array#__set local.get $7 i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set + i32.const 4 + call $~lib/typedarray/Uint32Array#__set local.get $7 i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set + i32.const 5 + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4272 + i32.const 4144 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -38536,54 +36049,54 @@ i64.store local.get $7 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u local.set $2 local.get $3 i32.const 12 - i32.const 13 + i32.const 9 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store offset=4 local.get $7 i32.load offset=4 - local.set $6 + local.set $5 loop $for-loop|0 local.get $1 local.get $2 i32.lt_s if local.get $1 - i32.const 3 + i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - f64.load - local.set $4 + i32.load + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $1 local.get $7 - i32.const 4272 + i32.const 4144 i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - i32.const 3 + i32.const 2 i32.shl - local.get $3 + local.get $8 i32.add - local.get $4 - f64.store + local.get $3 + i32.store local.get $0 i32.const 1 i32.add @@ -38596,10 +36109,10 @@ br $for-loop|0 end end + local.get $6 local.get $8 - local.get $3 local.get $0 - i32.const 3 + i32.const 2 i32.shl local.tee $0 call $~lib/rt/itcms/__renew @@ -38607,25 +36120,25 @@ i32.store local.get $1 if - local.get $8 + local.get $6 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $8 + local.get $6 local.get $0 i32.store offset=8 - local.get $8 + local.get $6 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 - local.get $8 + local.get $6 i32.load offset=4 - local.get $8 + local.get $6 i32.load i32.sub if @@ -38636,9 +36149,9 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.const 3 i32.ne @@ -38650,11 +36163,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 @@ -38663,11 +36176,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne if i32.const 0 i32.const 1568 @@ -38676,11 +36189,11 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne if i32.const 0 i32.const 1568 @@ -38702,1015 +36215,1022 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - local.get $0 - i32.const 255 - i32.and - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - local.get $0 - i32.const 65535 - i32.and - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - local.get $0 - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - local.get $0 - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store - local.get $0 - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if + i32.store offset=8 + local.get $2 + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 i32.const 0 - i32.const 1568 - i32.const 537 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $7 i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.ne - if + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $7 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $5 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $7 + i32.load offset=4 + local.set $5 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $5 + i32.add + i64.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $7 + i32.const 4176 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + if + local.get $0 + i32.const 3 + i32.shl + local.get $8 + i32.add + local.get $3 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $6 + local.get $8 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.store + local.get $1 + if + local.get $6 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $0 + i32.store offset=8 + local.get $6 + 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 $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.get $6 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $std/typedarray/forEachCallCount + i32.const 33040 + i32.const 33088 i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 7616 - i32.store - local.get $2 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 i32.lt_s - if - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $4 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $6 - i32.const 1 - i32.gt_u - if - local.get $6 - i32.const 1 - i32.shr_u - local.set $7 - local.get $6 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $7 i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $7 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $7 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $7 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $6 - loop $while-continue|0 - local.get $0 - local.get $7 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $7 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $5 + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $7 + i32.load offset=4 + local.set $5 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl local.get $5 i32.add - local.tee $8 i64.load - local.set $1 - local.get $8 - local.get $6 - local.get $0 - i32.sub + local.set $3 i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $8 - i64.load - i64.store - local.get $8 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $7 + i32.const 4208 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + if + local.get $0 + i32.const 3 + i32.shl + local.get $8 + i32.add + local.get $3 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end local.get $1 - i64.store - local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|0 + local.set $1 + br $for-loop|0 end end - end - i32.const 0 - local.set $0 - loop $for-loop|1 + local.get $6 + local.get $8 local.get $0 - local.get $2 - i32.lt_s + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.store + local.get $1 + if + local.get $6 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $0 + i32.store offset=8 + local.get $6 + 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 $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.get $6 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne if - local.get $3 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $5 + i32.const 33040 + i32.const 33088 i32.const 1 - i32.gt_u - if - local.get $5 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $7 i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $7 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $7 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $7 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $7 + i32.load offset=8 + i32.const 2 i32.shr_u - local.set $6 + local.set $2 local.get $5 - i32.const 1 - i32.sub + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $7 + i32.load offset=4 local.set $5 - loop $while-continue|01 - local.get $0 - local.get $6 - i32.lt_u + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s if - local.get $0 - i32.const 3 + local.get $1 + i32.const 2 i32.shl - local.get $4 - i32.add - local.tee $7 - i64.load - local.set $1 - local.get $7 local.get $5 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $4 i32.add - local.tee $7 - i64.load - i64.store + f32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $1 local.get $7 + i32.const 4240 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + if + local.get $0 + i32.const 2 + i32.shl + local.get $8 + i32.add + local.get $3 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end local.get $1 - i64.store - local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|01 + local.set $1 + br $for-loop|0 end end - end - local.get $3 - i32.store offset=16 - local.get $3 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 + local.get $6 + local.get $8 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.store + local.get $1 + if + local.get $6 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $0 + i32.store offset=8 + local.get $6 + 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 $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.get $6 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 7616 - i32.store - local.get $2 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 i32.lt_s - if - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $4 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $6 - i32.const 1 - i32.gt_u - if - local.get $6 - i32.const 1 - i32.shr_u - local.set $7 - local.get $6 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $7 i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $7 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $7 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $7 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $6 - loop $while-continue|0 - local.get $0 - local.get $7 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $7 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $5 + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $7 + i32.load offset=4 + local.set $5 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl local.get $5 i32.add - local.tee $8 - i64.load - local.set $1 - local.get $8 - local.get $6 - local.get $0 - i32.sub + f64.load + local.set $3 i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $8 - i64.load - i64.store - local.get $8 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $7 + i32.const 4272 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + if + local.get $0 + i32.const 3 + i32.shl + local.get $8 + i32.add + local.get $3 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end local.get $1 - i64.store - local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|0 + local.set $1 + br $for-loop|0 end end - end - i32.const 0 - local.set $0 - loop $for-loop|1 + local.get $6 + local.get $8 local.get $0 - local.get $2 - i32.lt_s + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.store + local.get $1 if - local.get $3 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + local.get $6 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $0 + i32.store offset=8 + local.get $6 + 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 $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.get $6 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $5 - i32.const 1 - i32.gt_u + i32.const 16628 + i32.lt_s if - local.get $5 + i32.const 33040 + i32.const 33088 i32.const 1 - i32.shr_u - local.set $6 - local.get $5 i32.const 1 - i32.sub - local.set $5 - loop $while-continue|01 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $7 - i64.load - local.set $1 - local.get $7 - local.get $5 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $7 - i64.load - i64.store - local.get $7 - local.get $1 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|01 - end - end - end - local.get $3 - i32.store offset=16 - local.get $3 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store local.get $3 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne + i32.const 7152 + i32.store + local.get $0 + i32.const 255 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 f32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -39725,281 +37245,132 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 7616 - i32.store - local.get $2 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $4 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $5 + i32.store local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $6 - i32.const 1 - i32.gt_u + i32.const 7152 + i32.store + local.get $0 + i32.const 65535 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne if - local.get $6 - i32.const 1 - i32.shr_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|0 - local.get $0 - local.get $7 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $8 - f32.load - local.set $1 - local.get $8 - local.get $6 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $8 - f32.load - f32.store - local.get $8 - local.get $1 - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 - i32.const 1 - i32.shr_u - local.set $6 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|01 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $7 - f32.load - local.set $1 - local.get $7 - local.get $5 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $7 - f32.load - f32.store - local.get $7 - local.get $1 - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|01 - end - end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.store offset=16 - local.get $3 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne if i32.const 0 i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 + global.get $std/typedarray/forEachCallCount i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + local.get $0 + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 f64) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -40014,267 +37385,192 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 7616 - i32.store - local.get $2 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $4 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $5 + i32.store local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $6 - i32.const 1 - i32.gt_u + i32.const 7152 + i32.store + local.get $0 + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne if - local.get $6 - i32.const 1 - i32.shr_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|0 - local.get $0 - local.get $7 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $8 - f64.load - local.set $1 - local.get $8 - local.get $6 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $8 - f64.load - f64.store - local.get $8 - local.get $1 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - local.get $4 i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $3 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $5 - i32.const 1 - i32.gt_u + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s if - local.get $5 + i32.const 33040 + i32.const 33088 i32.const 1 - i32.shr_u - local.set $6 - local.get $5 i32.const 1 - i32.sub - local.set $5 - loop $while-continue|01 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $7 - f64.load - local.set $1 - local.get $7 - local.get $5 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $7 - f64.load - f64.store - local.get $7 - local.get $1 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|01 - end - end + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.store offset=16 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne + i32.store + local.get $3 + i32.const 7152 + i32.store + local.get $0 + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne if i32.const 0 i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store local.get $3 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 + i32.const 7152 + i32.store + local.get $0 + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s f64.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40426,14 +37722,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -40549,16 +37840,14 @@ i32.add f32.load local.tee $2 + i32.trunc_sat_f32_s + i32.const 0 + local.get $2 local.get $2 f32.sub f32.const 0 f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_s - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -40633,16 +37922,14 @@ i32.add f64.load local.tee $3 + i32.trunc_sat_f64_s + i32.const 0 + local.get $3 local.get $3 f64.sub f64.const 0 f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -40816,14 +38103,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -40939,16 +38221,14 @@ i32.add f32.load local.tee $2 + i32.trunc_sat_f32_u + i32.const 0 + local.get $2 local.get $2 f32.sub f32.const 0 f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_u - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -41023,16 +38303,14 @@ i32.add f64.load local.tee $3 + i32.trunc_sat_f64_u + i32.const 0 + local.get $3 local.get $3 f64.sub f64.const 0 f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -41207,14 +38485,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $3 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -41373,6 +38646,8 @@ local.get $0 local.get $3 i32.add + f32.const 0 + f32.const 255 local.get $0 i32.const 2 i32.shl @@ -41380,20 +38655,16 @@ i32.add f32.load local.tee $1 + f32.min + f32.max + i32.trunc_sat_f32_u + i32.const 0 + local.get $1 local.get $1 f32.sub f32.const 0 f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $1 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -41462,6 +38733,8 @@ local.get $0 local.get $3 i32.add + f64.const 0 + f64.const 255 local.get $0 i32.const 3 i32.shl @@ -41469,20 +38742,16 @@ i32.add f64.load local.tee $2 + f64.min + f64.max + i32.trunc_sat_f64_u + i32.const 0 + local.get $2 local.get $2 f64.sub f64.const 0 f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $2 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end + select i32.store8 local.get $0 i32.const 1 @@ -41714,14 +38983,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -41841,16 +39105,14 @@ i32.add f32.load local.tee $2 + i32.trunc_sat_f32_s + i32.const 0 + local.get $2 local.get $2 f32.sub f32.const 0 f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_s - else - i32.const 0 - end + select i32.store16 local.get $0 i32.const 1 @@ -41929,16 +39191,14 @@ i32.add f64.load local.tee $3 + i32.trunc_sat_f64_s + i32.const 0 + local.get $3 local.get $3 f64.sub f64.const 0 f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end + select i32.store16 local.get $0 i32.const 1 @@ -42117,14 +39377,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -42244,16 +39499,14 @@ i32.add f32.load local.tee $2 + i32.trunc_sat_f32_u + i32.const 0 + local.get $2 local.get $2 f32.sub f32.const 0 f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_u - else - i32.const 0 - end + select i32.store16 local.get $0 i32.const 1 @@ -42332,16 +39585,14 @@ i32.add f64.load local.tee $3 + i32.trunc_sat_f64_u + i32.const 0 + local.get $3 local.get $3 f64.sub f64.const 0 f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end + select i32.store16 local.get $0 i32.const 1 @@ -42521,420 +39772,406 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $8 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $8 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $8 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $4 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12528 - call $~lib/rt/__newArray - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=16 - local.get $4 - local.get $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner1 - i32.const 11100 - i32.load - i32.const 3 - i32.add - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $4 - i32.load offset=4 - i32.const 12 - i32.add - local.set $5 - i32.const 11092 - i32.load - local.set $9 - i32.const 11100 - i32.load - local.set $10 - loop $for-loop|0 - local.get $0 - local.get $10 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.tee $6 - local.get $9 - i32.add - f32.load - local.set $2 - local.get $5 - local.get $6 - i32.add - local.get $2 - local.get $2 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12640 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $4 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - local.get $7 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12704 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $4 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=16 - i32.const 11196 - i32.load - i32.const 2 - i32.add - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $4 - i32.load offset=4 - i32.const 8 - i32.add - local.set $5 - i32.const 11188 - i32.load - local.set $6 - i32.const 11196 - i32.load - local.set $7 - i32.const 0 - local.set $0 - loop $for-loop|05 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.get $0 - i32.const 3 - i32.shl - local.get $6 - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|05 - end - end - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12768 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $4 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - local.get $8 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=16 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12832 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $4 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.tee $5 - local.get $0 - i32.load offset=4 - i32.add - i32.load - local.tee $4 - local.get $5 - local.get $1 - i32.load offset=4 - i32.add - i32.load - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 12960 - i32.store - i32.const 12960 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill local.get $1 - i64.const 0 - i64.store offset=8 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set local.get $1 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $4 + i32.const 11008 i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12528 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=16 + local.get $4 + local.get $5 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 + i32.const 11100 + i32.load + i32.const 3 + i32.add + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner1 + local.get $4 + i32.load offset=4 + i32.const 12 + i32.add + local.set $5 + i32.const 11092 + i32.load + local.set $9 + i32.const 11100 + i32.load + local.set $10 + loop $for-loop|0 + local.get $0 + local.get $10 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.tee $6 + local.get $9 + i32.add + f32.load + local.set $2 + local.get $5 + local.get $6 + i32.add + local.get $2 + i32.trunc_sat_f32_s + i32.const 0 + local.get $2 + local.get $2 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12640 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $4 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $4 + local.get $7 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12704 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $4 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=16 + i32.const 11196 + i32.load + i32.const 2 + i32.add + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner1 + local.get $4 + i32.load offset=4 + i32.const 8 + i32.add + local.set $5 + i32.const 11188 + i32.load + local.set $6 + i32.const 11196 + i32.load + local.set $7 + i32.const 0 + local.set $0 + loop $for-loop|05 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.get $0 + i32.const 3 + i32.shl + local.get $6 + i32.add + f64.load + local.tee $3 + i32.trunc_sat_f64_s + i32.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|05 + end + end + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12768 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $4 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $4 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + local.get $4 + local.get $1 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=16 + local.get $4 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12832 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $4 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.tee $4 + local.get $5 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12960 + i32.store + i32.const 12960 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (local $0 i32) + (local $1 i32) + (local $2 f32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -43056,16 +40293,14 @@ local.get $6 i32.add local.get $2 + i32.trunc_sat_f32_u + i32.const 0 + local.get $2 local.get $2 f32.sub f32.const 0 f32.eq - if (result i32) - local.get $2 - i32.trunc_f32_u - else - i32.const 0 - end + select i32.store local.get $0 i32.const 1 @@ -43144,16 +40379,14 @@ i32.add f64.load local.tee $3 + i32.trunc_sat_f64_u + i32.const 0 + local.get $3 local.get $3 f64.sub f64.const 0 f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end + select i32.store local.get $0 i32.const 1 @@ -43333,14 +40566,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -43460,16 +40688,14 @@ i32.add f32.load local.tee $3 + i64.trunc_sat_f32_s + i64.const 0 + local.get $3 local.get $3 f32.sub f32.const 0 f32.eq - if (result i64) - local.get $3 - i64.trunc_f32_s - else - i64.const 0 - end + select i64.store local.get $0 i32.const 1 @@ -43548,16 +40774,14 @@ local.get $9 i32.add local.get $2 + i64.trunc_sat_f64_s + i64.const 0 + local.get $2 local.get $2 f64.sub f64.const 0 f64.eq - if (result i64) - local.get $2 - i64.trunc_f64_s - else - i64.const 0 - end + select i64.store local.get $0 i32.const 1 @@ -43737,14 +40961,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -43864,16 +41083,14 @@ i32.add f32.load local.tee $3 + i64.trunc_sat_f32_u + i64.const 0 + local.get $3 local.get $3 f32.sub f32.const 0 f32.eq - if (result i64) - local.get $3 - i64.trunc_f32_u - else - i64.const 0 - end + select i64.store local.get $0 i32.const 1 @@ -43952,16 +41169,14 @@ local.get $9 i32.add local.get $2 + i64.trunc_sat_f64_u + i64.const 0 + local.get $2 local.get $2 f64.sub f64.const 0 f64.eq - if (result i64) - local.get $2 - i64.trunc_f64_u - else - i64.const 0 - end + select i64.store local.get $0 i32.const 1 @@ -44142,14 +41357,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $3 i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -44312,16 +41522,16 @@ i32.shr_u local.set $3 loop $for-loop|02 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add - local.get $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -44329,10 +41539,10 @@ i64.load f32.convert_i64_s f32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|02 end end @@ -44341,12 +41551,12 @@ i32.const 61 i32.const 14656 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 local.get $8 - local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> local.get $4 i32.load offset=8 @@ -44358,7 +41568,7 @@ br_if $folding-inner1 local.get $8 i32.load offset=4 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -44366,25 +41576,25 @@ i32.load offset=8 local.set $3 loop $for-loop|06 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 - i32.add local.get $1 + i32.add + local.get $0 local.get $2 i32.add i32.load8_u f32.convert_i32_u f32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|06 end end @@ -44404,7 +41614,7 @@ i32.load offset=4 i32.const 16 i32.add - local.set $0 + local.set $1 local.get $5 i32.load offset=4 local.set $2 @@ -44414,18 +41624,18 @@ i32.shr_u local.set $3 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|010 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 - i32.add local.get $1 + i32.add + local.get $0 i32.const 1 i32.shl local.get $2 @@ -44433,10 +41643,10 @@ i32.load16_s f32.convert_i32_s f32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|010 end end @@ -44457,7 +41667,7 @@ i32.load offset=4 i32.const 28 i32.add - local.set $0 + local.set $1 i32.const 11268 i32.load local.set $2 @@ -44465,27 +41675,27 @@ i32.load local.set $3 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|016 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 - i32.add local.get $1 + i32.add + local.get $0 local.get $2 i32.add i32.load8_s f32.convert_i32_s f32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|016 end end @@ -44616,7 +41826,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44633,16 +41842,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 + local.tee $1 i32.const 0 - i32.store offset=16 - local.get $2 + i32.const 20 + memory.fill + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $2 @@ -44700,7 +41904,7 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Float64Array#constructor - local.tee $5 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -44708,43 +41912,43 @@ block $folding-inner1 i32.const 11020 i32.load - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 - local.set $6 + local.set $5 i32.const 11012 i32.load - local.set $7 + local.set $6 i32.const 11020 i32.load - local.set $8 + local.set $7 loop $for-loop|0 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $6 i32.add i32.load f64.convert_i32_s f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -44753,12 +41957,12 @@ i32.const 62 i32.const 14784 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 - local.get $5 local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 @@ -44767,47 +41971,47 @@ i32.load i32.const 3 i32.add - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 i32.const 24 i32.add - local.set $6 + local.set $5 i32.const 11092 i32.load - local.set $7 + local.set $6 i32.const 11100 i32.load - local.set $8 + local.set $7 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|05 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $6 i32.add f32.load f64.promote_f32 f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end @@ -44816,12 +42020,12 @@ i32.const 62 i32.const 14944 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 - local.get $5 local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> local.get $2 i32.load offset=8 @@ -44829,48 +42033,48 @@ i32.shr_u i32.const 6 i32.add - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 i32.const 48 i32.add - local.set $6 + local.set $5 local.get $2 i32.load offset=4 - local.set $7 + local.set $6 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $2 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|09 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.tee $8 - local.get $6 + local.tee $7 + local.get $5 i32.add + local.get $6 local.get $7 - local.get $8 i32.add i64.load f64.convert_i64_s f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|09 end end @@ -44879,30 +42083,32 @@ i32.const 62 i32.const 15056 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 - local.get $5 local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> local.get $3 i32.load offset=8 - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=4 - local.set $2 + local.set $5 local.get $3 i32.load offset=8 local.set $3 + i32.const 0 + local.set $0 loop $for-loop|013 local.get $0 local.get $3 @@ -44911,10 +42117,10 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add local.get $0 - local.get $2 + local.get $5 i32.add i32.load8_u f64.convert_i32_u @@ -44932,41 +42138,41 @@ i32.shr_u i32.const 4 i32.add - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 i32.const 32 i32.add - local.set $1 + local.set $2 local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 + local.set $4 i32.const 0 local.set $0 loop $for-loop|017 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s f64.convert_i32_s @@ -44985,37 +42191,37 @@ i32.load i32.const 7 i32.add - local.get $5 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner1 - local.get $5 + local.get $1 i32.load offset=4 i32.const 56 i32.add - local.set $1 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $4 i32.const 0 local.set $0 loop $for-loop|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_s f64.convert_i32_s @@ -45036,7 +42242,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $5 + local.get $1 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer @@ -45058,18 +42264,17 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f64) - (local $8 i32) + (local $5 i32) + (local $6 f32) + (local $7 i32) + (local $8 f64) (local $9 i32) (local $10 i64) (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $12 f64) + (local $13 f32) (local $14 i64) - (local $15 f32) - (local $16 f64) + (local $15 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -45115,18 +42320,9 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.const 32 + memory.fill memory.size i32.const 16 i32.shl @@ -45507,33 +42703,58 @@ global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 + i32.load offset=4 + local.set $2 i32.const 1 + local.get $4 + i32.load offset=8 + local.tee $0 + local.get $0 i32.const 1 + i32.gt_s + select + local.tee $1 i32.const 3 - call $~lib/typedarray/Int8Array#fill + local.get $0 + local.get $0 + i32.const 3 + i32.gt_s + select + local.tee $0 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + i32.const 1 + local.get $0 + local.get $1 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 15 @@ -45543,7 +42764,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45555,11 +42776,30 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + i32.load offset=4 + local.set $2 i32.const 0 + local.get $4 + i32.load offset=8 + local.tee $1 + local.get $1 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill + i32.gt_s + select + local.tee $0 + local.get $1 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 0 + local.get $1 + local.get $0 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 15 @@ -45569,7 +42809,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45581,11 +42821,39 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 + local.get $4 + i32.load offset=4 + local.set $2 i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill + local.get $4 + i32.load offset=8 + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $0 + i32.const 3 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + i32.const 1 + local.get $0 + local.get $1 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 15 @@ -45595,7 +42863,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45607,11 +42875,33 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + local.tee $1 i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 + local.get $1 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 2 + local.get $1 + local.get $0 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 15 @@ -45621,7 +42911,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45633,11 +42923,36 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 + local.get $4 + i32.load offset=4 + local.set $2 i32.const 1 + local.get $4 + i32.load offset=8 + local.tee $0 + local.get $0 + i32.const 1 + i32.gt_s + select + local.tee $1 i32.const 0 - call $~lib/typedarray/Int8Array#fill + local.get $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + i32.const 0 + local.get $0 + local.get $1 + i32.sub + memory.fill + end i32.const 5 i32.const 0 i32.const 15 @@ -45647,7 +42962,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45660,18 +42975,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $1 + local.tee $3 i32.store offset=8 - local.get $1 + local.get $3 + i32.load offset=4 + local.set $2 i32.const 0 + local.get $3 + i32.load offset=8 + local.tee $1 + local.get $1 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill + i32.gt_s + select + local.tee $0 local.get $1 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 0 + local.get $1 + local.get $0 + i32.sub + memory.fill + end + local.get $3 i32.load offset=8 i32.const 3 i32.ne @@ -45683,9 +43017,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=4 - local.get $1 + local.get $3 i32.load i32.sub i32.const 1 @@ -45698,7 +43032,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=8 i32.const 3 i32.ne @@ -45719,7 +43053,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45740,7 +43074,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $4 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -45785,35 +43119,35 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 1 i32.gt_s select - local.set $0 + local.set $1 i32.const 3 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 3 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|0 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -45846,29 +43180,29 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - loop $for-loop|01 + local.set $1 + loop $for-loop|06 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|01 + local.set $1 + br $for-loop|06 end end i32.const 5 @@ -45900,39 +43234,39 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 3 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $for-loop|03 + local.set $0 + loop $for-loop|08 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|03 + local.set $1 + br $for-loop|08 end end i32.const 5 @@ -45958,12 +43292,12 @@ end local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 2 i32.sub local.tee $0 @@ -45972,24 +43306,24 @@ i32.const 0 i32.gt_s select - local.set $0 - loop $for-loop|05 - local.get $0 + local.set $1 + loop $for-loop|010 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|05 + local.set $1 + br $for-loop|010 end end i32.const 5 @@ -46021,36 +43355,36 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 1 i32.gt_s select - local.set $0 + local.set $1 i32.const 0 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $for-loop|07 + local.set $0 + loop $for-loop|012 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|07 + local.set $1 + br $for-loop|012 end end i32.const 5 @@ -46095,7 +43429,7 @@ i32.gt_s select local.set $0 - loop $for-loop|09 + loop $for-loop|014 local.get $0 local.get $1 i32.lt_s @@ -46111,7 +43445,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|09 + br $for-loop|014 end end local.get $3 @@ -47158,57 +44492,59 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 2896 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 + local.set $3 + i32.const 0 local.set $1 - loop $for-loop|010 + local.get $4 + i32.load offset=8 + local.set $2 + loop $for-loop|015 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 2896 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|010 + local.set $1 + br $for-loop|015 end end - local.get $8 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -47233,17 +44569,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -47251,43 +44587,43 @@ i32.const 2928 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 - i32.load offset=8 local.set $1 - loop $for-loop|0511 + local.get $4 + i32.load offset=8 + local.set $2 + loop $for-loop|05 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0511 + local.set $1 + br $for-loop|05 end end - local.get $8 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -47312,17 +44648,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -47330,43 +44666,43 @@ i32.const 2960 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 - i32.load offset=8 local.set $1 + local.get $4 + i32.load offset=8 + local.set $2 loop $for-loop|013 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|013 end end - local.get $8 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -47391,17 +44727,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -47409,47 +44745,47 @@ i32.const 2992 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|017 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|017 end end - local.get $8 + local.get $5 i32.const 65535 i32.and i32.const 6 @@ -47474,17 +44810,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -47492,47 +44828,47 @@ i32.const 3024 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|022 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|022 end end - local.get $8 + local.get $5 i32.const 65535 i32.and i32.const 6 @@ -47557,17 +44893,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -47575,47 +44911,47 @@ i32.const 3056 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|027 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|027 end end - local.get $8 + local.get $5 i32.const 6 i32.ne br_if $folding-inner1 @@ -47638,17 +44974,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -47656,47 +44992,47 @@ i32.const 3088 i32.store offset=4 i32.const 0 - local.set $8 - local.get $3 + local.set $5 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|032 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $5 local.get $0 - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|032 end end - local.get $8 + local.get $5 i32.const 6 i32.ne br_if $folding-inner1 @@ -47719,42 +45055,42 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 3120 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 loop $for-loop|037 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load local.set $10 @@ -47762,16 +45098,16 @@ global.set $~argumentsLength local.get $14 local.get $10 - local.get $6 - local.get $2 + local.get $1 + local.get $3 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $14 - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|037 end end @@ -47798,17 +45134,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -47817,25 +45153,25 @@ i32.store offset=4 i64.const 0 local.set $14 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 loop $for-loop|042 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load local.set $10 @@ -47843,16 +45179,16 @@ global.set $~argumentsLength local.get $14 local.get $10 - local.get $6 - local.get $2 + local.get $1 + local.get $3 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $14 - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|042 end end @@ -47879,63 +45215,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 3184 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 loop $for-loop|047 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $5 + local.set $6 i32.const 4 global.set $~argumentsLength - local.get $15 - local.get $5 + local.get $13 local.get $6 - local.get $2 + local.get $1 + local.get $3 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $15 - local.get $6 + local.set $13 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|047 end end - local.get $15 + local.get $13 f32.const 6 f32.ne br_if $folding-inner1 @@ -47958,63 +45294,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 3216 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 loop $for-loop|052 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $7 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $16 - local.get $7 - local.get $6 - local.get $2 + local.get $12 + local.get $8 + local.get $1 + local.get $3 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $16 - local.get $6 + local.set $12 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|052 end end - local.get $16 + local.get $12 f64.const 6 f64.ne br_if $folding-inner1 @@ -48598,17 +45934,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -48616,43 +45952,43 @@ i32.const 3248 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|059 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.get $12 + local.get $2 i32.add i32.load8_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|059 end end - local.get $6 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -48677,17 +46013,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -48695,43 +46031,43 @@ i32.const 3280 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|064 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.get $12 + local.get $2 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|064 end end - local.get $6 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -48756,17 +46092,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -48774,43 +46110,43 @@ i32.const 3312 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|071 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.get $12 + local.get $2 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|071 end end - local.get $6 + local.get $5 i32.const 255 i32.and i32.const 6 @@ -48835,17 +46171,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -48853,47 +46189,47 @@ i32.const 3344 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|076 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add i32.load16_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|076 end end - local.get $6 + local.get $5 i32.const 65535 i32.and i32.const 6 @@ -48918,17 +46254,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -48936,47 +46272,47 @@ i32.const 3376 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|081 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add i32.load16_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|081 end end - local.get $6 + local.get $5 i32.const 65535 i32.and i32.const 6 @@ -49001,17 +46337,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -49019,47 +46355,47 @@ i32.const 3408 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|086 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|086 end end - local.get $6 + local.get $5 i32.const 6 i32.ne br_if $folding-inner5 @@ -49082,17 +46418,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -49100,47 +46436,47 @@ i32.const 3440 i32.store offset=4 i32.const 0 - local.set $6 - local.get $2 + local.set $5 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|091 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $5 local.get $0 - local.get $12 - local.get $2 + local.get $1 + local.get $3 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $12 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|091 end end - local.get $6 + local.get $5 i32.const 6 i32.ne br_if $folding-inner5 @@ -49163,17 +46499,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -49182,22 +46518,22 @@ i32.store offset=4 i64.const 0 local.set $14 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|096 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 3 i32.shl local.get $0 @@ -49208,16 +46544,16 @@ global.set $~argumentsLength local.get $14 local.get $10 - local.get $12 local.get $1 + local.get $2 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $14 - local.get $12 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|096 end end @@ -49244,17 +46580,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -49263,22 +46599,22 @@ i32.store offset=4 i64.const 0 local.set $14 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|0101 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 3 i32.shl local.get $0 @@ -49289,16 +46625,16 @@ global.set $~argumentsLength local.get $14 local.get $10 - local.get $12 local.get $1 + local.get $2 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $14 - local.get $12 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|0101 end end @@ -49325,17 +46661,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -49343,47 +46679,47 @@ i32.const 3536 i32.store offset=4 f32.const 0 - local.set $15 - local.get $1 + local.set $13 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|0106 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.set $5 + local.set $6 i32.const 4 global.set $~argumentsLength - local.get $15 - local.get $5 - local.get $12 + local.get $13 + local.get $6 local.get $1 + local.get $2 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $15 - local.get $12 + local.set $13 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|0106 end end - local.get $15 + local.get $13 f32.const 6 f32.ne br_if $folding-inner5 @@ -49406,17 +46742,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -49424,47 +46760,47 @@ i32.const 3568 i32.store offset=4 f64.const 0 - local.set $16 - local.get $1 + local.set $12 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $12 + local.set $1 loop $for-loop|0111 - local.get $12 + local.get $1 i32.const 0 i32.ge_s if - local.get $12 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.set $7 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $16 - local.get $7 local.get $12 + local.get $8 local.get $1 + local.get $2 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $16 - local.get $12 + local.set $12 + local.get $1 i32.const 1 i32.sub - local.set $12 + local.set $1 br $for-loop|0111 end end - local.get $16 + local.get $12 f64.const 6 f64.ne br_if $folding-inner5 @@ -49491,17 +46827,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $8 + local.tee $7 i32.store - local.get $8 + local.get $7 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $8 + local.get $7 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $8 + local.get $7 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -49521,10 +46857,10 @@ local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $7 i32.load offset=8 local.set $4 - local.get $8 + local.get $7 i32.load offset=4 local.set $3 local.get $0 @@ -49539,33 +46875,33 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|02 + loop $for-loop|01 local.get $4 - local.get $11 + local.get $15 i32.gt_s if local.get $3 - local.get $11 + local.get $15 i32.add i32.load8_s local.set $0 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $11 + local.get $15 i32.add local.get $0 - local.get $11 - local.get $8 + local.get $15 + local.get $7 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|02 + local.set $15 + br $for-loop|01 end end local.get $2 @@ -49614,7 +46950,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49634,17 +46970,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $8 + local.tee $7 i32.store - local.get $8 + local.get $7 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $8 + local.get $7 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $8 + local.get $7 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -49664,10 +47000,10 @@ local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $7 i32.load offset=8 local.set $4 - local.get $8 + local.get $7 i32.load offset=4 local.set $3 local.get $0 @@ -49682,33 +47018,33 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|04 + loop $for-loop|03 local.get $4 - local.get $11 + local.get $15 i32.gt_s if local.get $3 - local.get $11 + local.get $15 i32.add i32.load8_u local.set $0 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $11 + local.get $15 i32.add local.get $0 - local.get $11 - local.get $8 + local.get $15 + local.get $7 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|04 + local.set $15 + br $for-loop|03 end end local.get $2 @@ -49757,7 +47093,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49777,17 +47113,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 + local.tee $7 i32.store - local.get $8 + local.get $7 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $8 + local.get $7 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $8 + local.get $7 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -49807,10 +47143,10 @@ local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $7 i32.load offset=8 local.set $4 - local.get $8 + local.get $7 i32.load offset=4 local.set $3 local.get $0 @@ -49825,33 +47161,33 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|08 + loop $for-loop|07 local.get $4 - local.get $11 + local.get $15 i32.gt_s if local.get $3 - local.get $11 + local.get $15 i32.add i32.load8_u local.set $0 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $11 + local.get $15 i32.add local.get $0 - local.get $11 - local.get $8 + local.get $15 + local.get $7 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|08 + local.set $15 + br $for-loop|07 end end local.get $2 @@ -49900,7 +47236,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> end i32.const 0 - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49954,10 +47290,10 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.set $8 + local.set $7 local.get $11 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.const 12 i32.const 6 @@ -49965,7 +47301,7 @@ local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.const 1 i32.shl local.tee $3 @@ -49974,15 +47310,15 @@ local.tee $2 i32.store offset=4 loop $for-loop|011 - local.get $8 - local.get $12 + local.get $7 + local.get $15 i32.gt_s if - local.get $12 + local.get $15 i32.const 1 i32.shl local.tee $1 - local.get $6 + local.get $5 i32.add i32.load16_s local.set $0 @@ -49992,16 +47328,16 @@ local.get $2 i32.add local.get $0 - local.get $12 + local.get $15 local.get $11 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 + local.set $15 br $for-loop|011 end end @@ -50051,7 +47387,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> end i32.const 0 - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50105,10 +47441,10 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.set $8 + local.set $7 local.get $11 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.const 12 i32.const 7 @@ -50116,7 +47452,7 @@ local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.const 1 i32.shl local.tee $3 @@ -50124,16 +47460,16 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - loop $for-loop|014 - local.get $8 - local.get $12 + loop $for-loop|016 + local.get $7 + local.get $15 i32.gt_s if - local.get $12 + local.get $15 i32.const 1 i32.shl local.tee $1 - local.get $6 + local.get $5 i32.add i32.load16_u local.set $0 @@ -50143,17 +47479,17 @@ local.get $2 i32.add local.get $0 - local.get $12 + local.get $15 local.get $11 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|014 + local.set $15 + br $for-loop|016 end end local.get $4 @@ -50202,7 +47538,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> end i32.const 0 - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50256,10 +47592,10 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $8 + local.set $7 local.get $11 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.const 12 i32.const 8 @@ -50267,7 +47603,7 @@ local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -50275,16 +47611,16 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - loop $for-loop|018 - local.get $8 - local.get $12 + loop $for-loop|019 + local.get $7 + local.get $15 i32.gt_s if - local.get $12 + local.get $15 i32.const 2 i32.shl local.tee $1 - local.get $6 + local.get $5 i32.add i32.load local.set $0 @@ -50294,17 +47630,17 @@ local.get $2 i32.add local.get $0 - local.get $12 + local.get $15 local.get $11 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|018 + local.set $15 + br $for-loop|019 end end local.get $4 @@ -50353,7 +47689,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> end i32.const 0 - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50407,10 +47743,10 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $8 + local.set $7 local.get $11 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.const 12 i32.const 9 @@ -50418,7 +47754,7 @@ local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -50426,16 +47762,16 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - loop $for-loop|021 - local.get $8 - local.get $12 + loop $for-loop|023 + local.get $7 + local.get $15 i32.gt_s if - local.get $12 + local.get $15 i32.const 2 i32.shl local.tee $1 - local.get $6 + local.get $5 i32.add i32.load local.set $0 @@ -50445,17 +47781,17 @@ local.get $2 i32.add local.get $0 - local.get $12 + local.get $15 local.get $11 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|021 + local.set $15 + br $for-loop|023 end end local.get $4 @@ -50504,7 +47840,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50558,7 +47894,7 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 + local.set $5 local.get $9 i32.load offset=4 local.set $4 @@ -50569,7 +47905,7 @@ local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 3 i32.shl local.tee $2 @@ -50577,12 +47913,12 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|024 - local.get $6 - local.get $11 + loop $for-loop|026 + local.get $5 + local.get $15 i32.gt_s if - local.get $11 + local.get $15 i32.const 3 i32.shl local.tee $0 @@ -50596,17 +47932,17 @@ local.get $1 i32.add local.get $10 - local.get $11 + local.get $15 local.get $9 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|024 + local.set $15 + br $for-loop|026 end end local.get $3 @@ -50655,7 +47991,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50709,7 +48045,7 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 + local.set $5 local.get $9 i32.load offset=4 local.set $4 @@ -50720,7 +48056,7 @@ local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 3 i32.shl local.tee $2 @@ -50728,12 +48064,12 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|028 - local.get $6 - local.get $11 + loop $for-loop|029 + local.get $5 + local.get $15 i32.gt_s if - local.get $11 + local.get $15 i32.const 3 i32.shl local.tee $0 @@ -50747,17 +48083,17 @@ local.get $1 i32.add local.get $10 - local.get $11 + local.get $15 local.get $9 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|028 + local.set $15 + br $for-loop|029 end end local.get $3 @@ -50806,7 +48142,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50860,7 +48196,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $6 + local.set $5 local.get $9 i32.load offset=4 local.set $4 @@ -50871,7 +48207,7 @@ local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 2 i32.shl local.tee $2 @@ -50879,36 +48215,36 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|031 - local.get $6 - local.get $11 + loop $for-loop|033 + local.get $5 + local.get $15 i32.gt_s if - local.get $11 + local.get $15 i32.const 2 i32.shl local.tee $0 local.get $4 i32.add f32.load - local.set $5 + local.set $6 i32.const 3 global.set $~argumentsLength local.get $0 local.get $1 i32.add - local.get $5 - local.get $11 + local.get $6 + local.get $15 local.get $9 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|031 + local.set $15 + br $for-loop|033 end end local.get $3 @@ -50957,7 +48293,7 @@ br $__inlined_func$std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> end i32.const 0 - local.set $11 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51011,7 +48347,7 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 + local.set $5 local.get $9 i32.load offset=4 local.set $4 @@ -51022,7 +48358,7 @@ local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 3 i32.shl local.tee $2 @@ -51030,36 +48366,36 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - loop $for-loop|034 - local.get $6 - local.get $11 + loop $for-loop|036 + local.get $5 + local.get $15 i32.gt_s if - local.get $11 + local.get $15 i32.const 3 i32.shl local.tee $0 local.get $4 i32.add f64.load - local.set $7 + local.set $8 i32.const 3 global.set $~argumentsLength local.get $0 local.get $1 i32.add - local.get $7 - local.get $11 + local.get $8 + local.get $15 local.get $9 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $11 + local.get $15 i32.const 1 i32.add - local.set $11 - br $for-loop|034 + local.set $15 + br $for-loop|036 end end local.get $3 @@ -51118,8 +48454,6 @@ call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51156,16 +48490,18 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|012 + loop $for-loop|01638 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_s local.set $0 @@ -51173,18 +48509,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|012 + local.set $5 + br $for-loop|01638 end end i32.const 0 @@ -51199,17 +48535,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0436 + loop $for-loop|04 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_s local.set $0 @@ -51217,18 +48553,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0436 + local.set $5 + br $for-loop|04 end end i32.const 0 @@ -51238,8 +48574,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51276,16 +48610,18 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|01437 + loop $for-loop|018 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -51293,18 +48629,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|01437 + local.set $5 + br $for-loop|018 end end i32.const 0 @@ -51319,17 +48655,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0415 + loop $for-loop|0419 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -51337,18 +48673,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0415 + local.set $5 + br $for-loop|0419 end end i32.const 0 @@ -51358,8 +48694,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51389,23 +48723,25 @@ i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.016 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.020 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4432 i32.store offset=4 local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|01838 + loop $for-loop|021 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -51413,25 +48749,25 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.020 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|01838 + local.set $5 + br $for-loop|021 end end i32.const 0 end i32.eqz br_if $folding-inner23 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0119 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0122 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4464 i32.store offset=4 @@ -51439,17 +48775,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0420 + loop $for-loop|0423 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -51457,18 +48793,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0119 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0122 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0420 + local.set $5 + br $for-loop|0423 end end i32.const 0 @@ -51478,8 +48814,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51516,17 +48850,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|02139 + loop $for-loop|024 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -51537,18 +48873,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|02139 + local.set $5 + br $for-loop|024 end end i32.const 0 @@ -51563,18 +48899,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0422 + loop $for-loop|0425 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -51585,18 +48921,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0422 + local.set $5 + br $for-loop|0425 end end i32.const 0 @@ -51606,8 +48942,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51644,17 +48978,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|023 + loop $for-loop|02639 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -51665,18 +49001,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|023 + local.set $5 + br $for-loop|02639 end end i32.const 0 @@ -51691,18 +49027,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0424 + loop $for-loop|0427 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -51713,18 +49049,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0424 + local.set $5 + br $for-loop|0427 end end i32.const 0 @@ -51734,8 +49070,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51772,17 +49106,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|025 + loop $for-loop|028 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -51793,18 +49129,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|025 + local.set $5 + br $for-loop|028 end end i32.const 0 @@ -51819,18 +49155,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0426 + loop $for-loop|0429 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -51841,18 +49177,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0426 + local.set $5 + br $for-loop|0429 end end i32.const 0 @@ -51862,8 +49198,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51900,17 +49234,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|02840 + loop $for-loop|030 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -51921,18 +49257,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|02840 + local.set $5 + br $for-loop|030 end end i32.const 0 @@ -51947,18 +49283,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0429 + loop $for-loop|0431 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -51969,18 +49305,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0429 + local.set $5 + br $for-loop|0431 end end i32.const 0 @@ -51990,8 +49326,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52028,17 +49362,19 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|030 + loop $for-loop|03340 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -52049,18 +49385,18 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 4752 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|030 + local.set $5 + br $for-loop|03340 end end i32.const 0 @@ -52075,18 +49411,18 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0431 + loop $for-loop|0434 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -52097,18 +49433,18 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0431 + local.set $5 + br $for-loop|0434 end end i32.const 0 @@ -52118,8 +49454,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52156,17 +49490,19 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|033 + loop $for-loop|035 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -52177,18 +49513,18 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 4816 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|033 + local.set $5 + br $for-loop|035 end end i32.const 0 @@ -52203,18 +49539,18 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0434 + loop $for-loop|0436 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -52225,18 +49561,18 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0434 + local.set $5 + br $for-loop|0436 end end i32.const 0 @@ -52246,8 +49582,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52284,39 +49618,41 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|035 + loop $for-loop|038 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 2 i32.shl local.get $1 i32.add f32.load - local.set $5 + local.set $6 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $6 local.get $5 - local.get $8 local.get $2 i32.const 4880 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|035 + local.set $5 + br $for-loop|038 end end i32.const 0 @@ -52331,40 +49667,40 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|043641 + loop $for-loop|0439 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 2 i32.shl local.get $1 i32.add f32.load - local.set $5 + local.set $6 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $6 local.get $5 - local.get $8 local.get $2 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|043641 + local.set $5 + br $for-loop|0439 end end i32.const 0 @@ -52374,8 +49710,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52412,39 +49746,41 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|038 + loop $for-loop|040 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 i32.add f64.load - local.set $7 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 local.get $8 + local.get $5 local.get $2 i32.const 4944 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|038 + local.set $5 + br $for-loop|040 end end i32.const 0 @@ -52459,40 +49795,40 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0439 + loop $for-loop|0441 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 i32.add f64.load - local.set $7 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 local.get $8 + local.get $5 local.get $2 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0439 + local.set $5 + br $for-loop|0441 end end i32.const 0 @@ -52502,8 +49838,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52513,111 +49847,109 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5008 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|040 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5008 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + loop $for-loop|043 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_s - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|040 + local.set $5 + br $for-loop|043 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5040 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|0441 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5040 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0444 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_s - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0441 + local.set $5 + br $for-loop|0444 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -52625,8 +49957,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52636,111 +49966,109 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5072 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|043 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + loop $for-loop|045 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|043 + local.set $5 + br $for-loop|045 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|0444 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0446 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0444 + local.set $5 + br $for-loop|0446 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -52748,8 +50076,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52759,111 +50085,109 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|046 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.047 + loop $for-loop|048 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 - drop - local.get $0 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|046 + local.set $5 + br $for-loop|048 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0147 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - local.set $2 - loop $for-loop|0448 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0149 + loop $for-loop|0450 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 - local.get $3 + local.get $2 + local.get $5 i32.add i32.load8_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0147 - drop - local.get $0 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0149 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0448 + local.set $5 + br $for-loop|0450 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -52871,8 +50195,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52882,119 +50204,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|049 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + loop $for-loop|051 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add i32.load16_s - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|049 + local.set $5 + br $for-loop|051 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0450 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0452 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add i32.load16_s - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0450 + local.set $5 + br $for-loop|0452 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53002,8 +50322,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53013,119 +50331,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|051 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + loop $for-loop|053 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add i32.load16_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|051 + local.set $5 + br $for-loop|053 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5296 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0452 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0454 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add i32.load16_u - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 - drop - local.get $0 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0452 + local.set $5 + br $for-loop|0454 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53133,8 +50449,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53144,119 +50458,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5328 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|053 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + loop $for-loop|055 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|053 + local.set $5 + br $for-loop|055 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5360 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0454 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5360 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0456 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0454 + local.set $5 + br $for-loop|0456 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53264,8 +50576,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53275,119 +50585,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5392 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|055 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + loop $for-loop|057 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|055 + local.set $5 + br $for-loop|057 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5424 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0456 - local.get $0 - local.get $2 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $5 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|0458 + local.get $1 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.set $1 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $0 - local.get $4 + local.get $5 + local.get $3 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0456 + local.set $5 + br $for-loop|0458 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53395,8 +50703,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53406,119 +50712,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|057 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + loop $for-loop|060 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $10 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|057 + local.set $5 + br $for-loop|060 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5488 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0458 + global.get $~lib/memory/__stack_pointer + i32.const 5488 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|0461 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $10 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0458 + local.set $5 + br $for-loop|0461 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53526,8 +50830,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53537,119 +50839,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5520 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|060 + global.get $~lib/memory/__stack_pointer + i32.const 5520 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + loop $for-loop|062 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $10 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|060 + local.set $5 + br $for-loop|062 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5552 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0461 + global.get $~lib/memory/__stack_pointer + i32.const 5552 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|0463 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $10 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0461 + local.set $5 + br $for-loop|0463 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53657,8 +50957,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53668,119 +50966,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $2 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $2 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5584 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|062 + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + loop $for-loop|065 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add f32.load - local.set $5 i32.const 3 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $0 - local.get $3 + local.get $2 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|062 + local.set $5 + br $for-loop|065 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0463 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|0466 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add f32.load - local.set $5 i32.const 3 global.set $~argumentsLength - local.get $0 local.get $5 - local.get $0 - local.get $3 + local.get $2 i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0463 + local.set $5 + br $for-loop|0466 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53788,8 +51084,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53799,119 +51093,117 @@ i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $2 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $2 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5648 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|065 + global.get $~lib/memory/__stack_pointer + i32.const 5648 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + loop $for-loop|067 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add f64.load - local.set $7 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $7 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|065 + local.set $5 + br $for-loop|067 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner25 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5680 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0466 + global.get $~lib/memory/__stack_pointer + i32.const 5680 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $5 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|0468 local.get $0 - local.get $1 - i32.lt_s + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add f64.load - local.set $7 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $7 - local.get $0 - local.get $3 + local.get $5 + local.get $2 i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 - drop - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|0466 + local.set $5 + br $for-loop|0468 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner26 @@ -53934,107 +51226,103 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5712 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|067 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5712 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + loop $for-loop|069 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_s - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5712 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|067 + local.set $5 + br $for-loop|069 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5744 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0468 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5744 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0470 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_s - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5744 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0468 + local.set $5 + br $for-loop|0470 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54057,107 +51345,103 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5776 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|069 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5776 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + loop $for-loop|072 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5776 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|069 + local.set $5 + br $for-loop|072 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5808 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0470 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5808 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0473 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5808 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0470 + local.set $5 + br $for-loop|0473 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54180,107 +51464,103 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.071 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5840 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|072 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5840 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.074 + loop $for-loop|075 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5840 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.071 - drop - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.074 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|072 + local.set $5 + br $for-loop|075 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0173 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5872 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0474 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5872 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0176 + loop $for-loop|0477 + local.get $5 i32.const 0 i32.ge_s if local.get $1 - local.get $2 + local.get $5 i32.add i32.load8_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5872 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0173 - drop - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0176 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0474 + local.set $5 + br $for-loop|0477 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54303,115 +51583,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|075 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + loop $for-loop|078 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_s - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5904 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|075 + local.set $5 + br $for-loop|078 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5936 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0476 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5936 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0479 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_s - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5936 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0476 + local.set $5 + br $for-loop|0479 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54434,115 +51710,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 5968 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|077 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5968 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + loop $for-loop|080 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 5968 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|077 + local.set $5 + br $for-loop|080 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6000 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0478 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6000 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0481 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 6000 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0478 + local.set $5 + br $for-loop|0481 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54565,115 +51837,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6032 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|079 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + loop $for-loop|082 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 6032 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|079 + local.set $5 + br $for-loop|082 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6064 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0480 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6064 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0483 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 6064 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0480 + local.set $5 + br $for-loop|0483 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54696,115 +51964,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6096 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|082 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6096 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + loop $for-loop|084 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 6096 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|082 + local.set $5 + br $for-loop|084 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6128 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0483 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|0485 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0483 + local.set $5 + br $for-loop|0485 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54827,115 +52091,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6160 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|084 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + loop $for-loop|087 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $10 - local.get $1 - local.get $2 i32.const 6160 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|084 + local.set $5 + br $for-loop|087 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6192 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0485 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6192 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|0488 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $10 - local.get $1 - local.get $2 i32.const 6192 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0485 + local.set $5 + br $for-loop|0488 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -54958,115 +52218,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6224 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|087 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6224 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + loop $for-loop|089 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $10 - local.get $1 - local.get $2 i32.const 6224 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|087 + local.set $5 + br $for-loop|089 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6256 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0488 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|0490 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $10 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $10 - local.get $1 - local.get $2 i32.const 6256 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0488 + local.set $5 + br $for-loop|0490 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -55089,115 +52345,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6288 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|089 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + loop $for-loop|092 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.set $5 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $5 local.get $1 - local.get $2 i32.const 6288 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|089 + local.set $5 + br $for-loop|092 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6320 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0490 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|0493 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.set $5 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $5 local.get $1 - local.get $2 i32.const 6320 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0490 + local.set $5 + br $for-loop|0493 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -55220,115 +52472,111 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6352 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|092 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + loop $for-loop|094 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.set $7 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $7 - local.get $1 - local.get $2 i32.const 6352 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|092 + local.set $5 + br $for-loop|094 end end i32.const -1 + local.set $5 end + local.get $5 i32.const 1 i32.ne br_if $folding-inner27 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 6384 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0493 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 6384 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $5 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|0495 + local.get $5 i32.const 0 i32.ge_s if - local.get $1 + local.get $5 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.set $7 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $1 - local.get $7 - local.get $1 - local.get $2 i32.const 6384 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 - drop - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $1 - br $for-loop|0493 + local.set $5 + br $for-loop|0495 end end i32.const -1 + local.set $5 end + local.get $5 i32.const -1 i32.ne br_if $folding-inner28 @@ -55336,8 +52584,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55374,16 +52620,18 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|094 + loop $for-loop|097 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_s local.set $0 @@ -55391,7 +52639,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6416 i32.load @@ -55399,11 +52647,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|094 + local.set $5 + br $for-loop|097 end end i32.const 1 @@ -55418,17 +52666,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0495 + loop $for-loop|0498 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_s local.set $0 @@ -55436,7 +52684,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6448 i32.load @@ -55444,11 +52692,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0495 + local.set $5 + br $for-loop|0498 end end i32.const 1 @@ -55458,8 +52706,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55496,16 +52742,18 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|097 + loop $for-loop|099 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -55513,7 +52761,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6480 i32.load @@ -55521,11 +52769,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|097 + local.set $5 + br $for-loop|099 end end i32.const 1 @@ -55540,17 +52788,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0498 + loop $for-loop|04100 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -55558,7 +52806,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6512 i32.load @@ -55566,11 +52814,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0498 + local.set $5 + br $for-loop|04100 end end i32.const 1 @@ -55580,8 +52828,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55611,23 +52857,25 @@ i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.099 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0101 (result i32) global.get $~lib/memory/__stack_pointer i32.const 6544 i32.store offset=4 local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|0100 + loop $for-loop|0102 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -55635,26 +52883,26 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.099 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0101 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0100 + local.set $5 + br $for-loop|0102 end end i32.const 1 end i32.eqz br_if $folding-inner29 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01101 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01103 (result i32) global.get $~lib/memory/__stack_pointer i32.const 6576 i32.store offset=4 @@ -55662,17 +52910,17 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 local.set $1 - loop $for-loop|04102 + loop $for-loop|04104 local.get $1 - local.get $6 + local.get $5 i32.gt_s if local.get $2 - local.get $6 + local.get $5 i32.add i32.load8_u local.set $0 @@ -55680,19 +52928,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01101 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01103 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|04102 + local.set $5 + br $for-loop|04104 end end i32.const 1 @@ -55702,8 +52950,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55740,17 +52986,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0103 + loop $for-loop|0105 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -55761,7 +53009,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6608 i32.load @@ -55769,11 +53017,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0103 + local.set $5 + br $for-loop|0105 end end i32.const 1 @@ -55788,18 +53036,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|04104 + loop $for-loop|04106 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -55810,7 +53058,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6640 i32.load @@ -55818,11 +53066,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|04104 + local.set $5 + br $for-loop|04106 end end i32.const 1 @@ -55832,8 +53080,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55870,17 +53116,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0105 + loop $for-loop|0107 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -55891,7 +53139,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6672 i32.load @@ -55899,11 +53147,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0105 + local.set $5 + br $for-loop|0107 end end i32.const 1 @@ -55918,18 +53166,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|04106 + loop $for-loop|04108 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 1 i32.shl local.get $2 @@ -55940,7 +53188,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6704 i32.load @@ -55948,11 +53196,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|04106 + local.set $5 + br $for-loop|04108 end end i32.const 1 @@ -55962,8 +53210,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56000,17 +53246,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0107 + loop $for-loop|0109 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -56021,7 +53269,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6736 i32.load @@ -56029,11 +53277,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0107 + local.set $5 + br $for-loop|0109 end end i32.const 1 @@ -56048,18 +53296,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|04108 + loop $for-loop|04110 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -56070,7 +53318,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6768 i32.load @@ -56078,11 +53326,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|04108 + local.set $5 + br $for-loop|04110 end end i32.const 1 @@ -56092,8 +53340,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56130,17 +53376,19 @@ local.get $3 i32.load offset=4 local.set $2 + i32.const 0 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0109 + loop $for-loop|0112 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -56151,7 +53399,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6800 i32.load @@ -56159,11 +53407,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0109 + local.set $5 + br $for-loop|0112 end end i32.const 1 @@ -56178,18 +53426,18 @@ i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $5 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|04110 + loop $for-loop|04113 local.get $1 - local.get $6 + local.get $5 i32.gt_s if - local.get $6 + local.get $5 i32.const 2 i32.shl local.get $2 @@ -56200,7 +53448,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $5 local.get $3 i32.const 6832 i32.load @@ -56208,11 +53456,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|04110 + local.set $5 + br $for-loop|04113 end end i32.const 1 @@ -56222,8 +53470,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56260,17 +53506,19 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0112 + loop $for-loop|0114 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -56281,7 +53529,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 6864 i32.load @@ -56289,11 +53537,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0112 + local.set $5 + br $for-loop|0114 end end i32.const 1 @@ -56308,18 +53556,18 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|04113 + loop $for-loop|04115 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -56330,7 +53578,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 6896 i32.load @@ -56338,11 +53586,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|04113 + local.set $5 + br $for-loop|04115 end end i32.const 1 @@ -56352,8 +53600,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56390,17 +53636,19 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0114 + loop $for-loop|0116 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -56411,7 +53659,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 6928 i32.load @@ -56419,11 +53667,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0114 + local.set $5 + br $for-loop|0116 end end i32.const 1 @@ -56438,18 +53686,18 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|04115 + loop $for-loop|04117 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 @@ -56460,7 +53708,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $8 + local.get $5 local.get $2 i32.const 6960 i32.load @@ -56468,11 +53716,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|04115 + local.set $5 + br $for-loop|04117 end end i32.const 1 @@ -56482,8 +53730,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56520,28 +53766,30 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0116 + loop $for-loop|0118 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 2 i32.shl local.get $1 i32.add f32.load - local.set $5 + local.set $6 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $6 local.get $5 - local.get $8 local.get $2 i32.const 6992 i32.load @@ -56549,11 +53797,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0116 + local.set $5 + br $for-loop|0118 end end i32.const 1 @@ -56568,29 +53816,29 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|04117 + loop $for-loop|04119 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 2 i32.shl local.get $1 i32.add f32.load - local.set $5 + local.set $6 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $6 local.get $5 - local.get $8 local.get $2 i32.const 7024 i32.load @@ -56598,11 +53846,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|04117 + local.set $5 + br $for-loop|04119 end end i32.const 1 @@ -56612,8 +53860,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56650,28 +53896,30 @@ local.get $2 i32.load offset=4 local.set $1 + i32.const 0 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0118 + loop $for-loop|0120 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 i32.add f64.load - local.set $7 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 local.get $8 + local.get $5 local.get $2 i32.const 7056 i32.load @@ -56679,11 +53927,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|0118 + local.set $5 + br $for-loop|0120 end end i32.const 1 @@ -56698,29 +53946,29 @@ i32.load offset=4 local.set $1 i32.const 0 - local.set $8 + local.set $5 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|04119 + loop $for-loop|04121 local.get $0 - local.get $8 + local.get $5 i32.gt_s if - local.get $8 + local.get $5 i32.const 3 i32.shl local.get $1 i32.add f64.load - local.set $7 + local.set $8 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 local.get $8 + local.get $5 local.get $2 i32.const 7088 i32.load @@ -56728,11 +53976,11 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|04119 + local.set $5 + br $for-loop|04121 end end i32.const 1 @@ -56762,14 +54010,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -56779,7 +54027,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -56789,7 +54037,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -56799,35 +54047,35 @@ global.get $~lib/memory/__stack_pointer i32.const 7200 i32.store offset=8 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 - i32.load offset=8 local.set $1 - loop $for-loop|0116120 + local.get $4 + i32.load offset=8 + local.set $2 + loop $for-loop|0116122 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 7200 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0116120 + local.set $1 + br $for-loop|0116122 end end global.get $std/typedarray/forEachCallCount @@ -56858,14 +54106,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -56876,7 +54124,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -56887,7 +54135,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -56898,34 +54146,34 @@ global.get $~lib/memory/__stack_pointer i32.const 7232 i32.store offset=8 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 - i32.load offset=8 local.set $1 + local.get $4 + i32.load offset=8 + local.set $2 loop $for-loop|0121 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 7232 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|0121 end end @@ -56957,14 +54205,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -56975,7 +54223,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -56986,7 +54234,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -56997,34 +54245,34 @@ global.get $~lib/memory/__stack_pointer i32.const 7264 i32.store offset=8 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 - i32.load offset=8 local.set $1 + local.get $4 + i32.load offset=8 + local.set $2 loop $for-loop|0128 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 7264 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|0128 end end @@ -57056,14 +54304,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -57073,7 +54321,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -57083,7 +54331,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -57093,38 +54341,38 @@ global.get $~lib/memory/__stack_pointer i32.const 7296 i32.store offset=8 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|0133 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $3 + local.get $1 + local.get $4 i32.const 7296 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|0133 end end @@ -57156,14 +54404,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -57174,7 +54422,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -57185,7 +54433,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -57196,39 +54444,233 @@ global.get $~lib/memory/__stack_pointer i32.const 7328 i32.store offset=8 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|0138 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 7328 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0138 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store offset=8 + local.get $4 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0143 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 7360 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0143 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store offset=8 + local.get $4 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0148 + local.get $1 + local.get $2 + i32.lt_s if - local.get $6 - i32.const 1 + local.get $1 + i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add - i32.load16_u + i32.load i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $3 - i32.const 7328 + local.get $1 + local.get $4 + i32.const 7392 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0138 + local.set $1 + br $for-loop|0148 end end global.get $std/typedarray/forEachCallCount @@ -57258,7 +54700,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $3 i32.store local.get $3 @@ -57271,7 +54713,8 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57280,7 +54723,8 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57289,43 +54733,44 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 7424 i32.store offset=8 local.get $3 i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $1 local.get $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|0143 + local.set $0 + loop $for-loop|0153 + local.get $0 local.get $1 - local.get $6 i32.gt_s if - local.get $6 - i32.const 2 + local.get $1 + i32.const 3 i32.shl local.get $2 i32.add - i32.load + i64.load i32.const 3 global.set $~argumentsLength - local.get $6 + local.get $1 local.get $3 - i32.const 7360 + i32.const 7424 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0143 + local.set $1 + br $for-loop|0153 end end global.get $std/typedarray/forEachCallCount @@ -57355,7 +54800,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $3 i32.store local.get $3 @@ -57368,7 +54813,8 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57377,7 +54823,8 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57386,43 +54833,44 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7392 + i32.const 7456 i32.store offset=8 local.get $3 i32.load offset=4 local.set $2 i32.const 0 - local.set $6 + local.set $1 local.get $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|0148 + local.set $0 + loop $for-loop|0158 + local.get $0 local.get $1 - local.get $6 i32.gt_s if - local.get $6 - i32.const 2 + local.get $1 + i32.const 3 i32.shl local.get $2 i32.add - i32.load + i64.load i32.const 3 global.set $~argumentsLength - local.get $6 + local.get $1 local.get $3 - i32.const 7392 + i32.const 7456 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $6 + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0148 + local.set $1 + br $for-loop|0158 end end global.get $std/typedarray/forEachCallCount @@ -57452,77 +54900,77 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7424 + i32.const 7488 i32.store offset=8 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0153 + loop $for-loop|0163 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 - i32.const 3 - i32.shl local.get $1 + i32.const 2 + i32.shl + local.get $2 i32.add - i64.load + f32.load i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $2 - i32.const 7424 + local.get $1 + local.get $3 + i32.const 7488 i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $6 + call_indirect $0 (type $f32_i32_i32_=>_none) + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0153 + local.set $1 + br $for-loop|0163 end end global.get $std/typedarray/forEachCallCount @@ -57552,77 +55000,77 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7456 + i32.const 7520 i32.store offset=8 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 + local.set $2 i32.const 0 - local.set $6 - local.get $2 + local.set $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0158 + loop $for-loop|0168 local.get $0 - local.get $6 + local.get $1 i32.gt_s if - local.get $6 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add - i64.load + f64.load i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $2 - i32.const 7456 + local.get $1 + local.get $3 + i32.const 7520 i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $6 + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0158 + local.set $1 + br $for-loop|0168 end end global.get $std/typedarray/forEachCallCount @@ -57633,8 +55081,10 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -57643,98 +55093,396 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.const 20 + memory.fill local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0123 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0123 + end + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/util/bytes/REVERSE i32.const 0 - i32.const 7152 + local.set $5 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $5 + call $~lib/typedarray/Int8Array#__get + i32.const 7616 + local.get $2 + i32.const 1 + i32.sub + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + br_if $folding-inner31 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/util/bytes/REVERSE + local.get $0 + i32.store offset=16 + local.get $0 i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 7616 + i32.store + local.get $0 + i32.const 7628 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0124 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0124 + end + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/util/bytes/REVERSE + i32.const 0 + local.set $5 + loop $for-loop|1125 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $5 + call $~lib/typedarray/Uint8Array#__get + i32.const 7616 + local.get $2 + i32.const 1 + i32.sub + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner31 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1125 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/util/bytes/REVERSE + local.get $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 7616 + i32.store + local.get $0 + i32.const 7628 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7488 - i32.store offset=8 local.get $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0126 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.get $5 + i32.const 7616 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0126 + end + end + local.get $1 i32.load offset=4 - local.set $1 - i32.const 0 - local.set $6 - local.get $2 + local.get $1 i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - loop $for-loop|0163 - local.get $0 - local.get $6 + call $~lib/util/bytes/REVERSE + i32.const 0 + local.set $5 + loop $for-loop|1127 + local.get $2 + local.get $5 i32.gt_s if - local.get $6 - i32.const 2 - i32.shl local.get $1 - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $6 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7616 local.get $2 - i32.const 7488 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $6 + i32.const 1 + i32.sub + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner31 + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|0163 + local.set $5 + br $for-loop|1127 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/util/bytes/REVERSE + local.get $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.ne - br_if $folding-inner6 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -57743,98 +55491,122 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.const 20 + memory.fill local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7520 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 i32.store offset=8 - local.get $2 - i32.load offset=4 - local.set $1 i32.const 0 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|0168 - local.get $0 - local.get $6 + local.set $15 + loop $for-loop|0171 + local.get $2 + local.get $15 i32.gt_s if - local.get $6 - i32.const 3 - i32.shl local.get $1 + local.get $15 + i32.const 7616 + local.get $15 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.get $15 + i32.const 7616 + local.get $15 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $15 + i32.const 1 i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $6 + local.set $15 + br $for-loop|0171 + end + end + local.get $1 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $15 + loop $for-loop|1128 + local.get $2 + local.get $15 + i32.gt_s + if + local.get $1 + local.get $15 + call $~lib/typedarray/Int16Array#__get + i32.const 7616 local.get $2 - i32.const 7520 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $6 + i32.const 1 + i32.sub + local.get $15 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + br_if $folding-inner31 + local.get $15 i32.const 1 i32.add - local.set $6 - br $for-loop|0168 + local.set $15 + br $for-loop|1128 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.ne - br_if $folding-inner6 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57845,14 +55617,9 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store @@ -57860,109 +55627,108 @@ i32.const 7628 i32.load local.tee $2 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $0 i32.store offset=8 - loop $for-loop|0122 + i32.const 0 + local.set $15 + loop $for-loop|021129 local.get $2 - local.get $8 + local.get $15 i32.gt_s if local.get $1 - local.get $8 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set local.get $0 - local.get $8 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $8 + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|0122 + local.set $15 + br $for-loop|021129 end end local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/util/bytes/REVERSE + call $~lib/typedarray/Int16Array#reverse + drop i32.const 0 - local.set $8 - loop $for-loop|1 + local.set $15 + loop $for-loop|124 local.get $2 - local.get $8 + local.get $15 i32.gt_s if local.get $1 - local.get $8 - call $~lib/typedarray/Int8Array#__get + local.get $15 + call $~lib/typedarray/Uint16Array#__get i32.const 7616 local.get $2 i32.const 1 i32.sub - local.get $8 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.extend8_s + i32.const 65535 + i32.and i32.ne br_if $folding-inner31 - local.get $8 + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|1 + local.set $15 + br $for-loop|124 end end global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 4 i32.const 8 - call $~lib/typedarray/Int8Array#subarray + call $~lib/typedarray/Uint16Array#subarray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/bytes/REVERSE - local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 8 i32.ne br_if $folding-inner32 local.get $0 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 7 i32.ne br_if $folding-inner33 local.get $0 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 6 i32.ne br_if $folding-inner34 local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.ne br_if $folding-inner35 @@ -57970,8 +55736,6 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57982,126 +55746,220 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.tee $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.get $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $7 i32.store offset=8 - loop $for-loop|0123 - local.get $2 - local.get $8 + i32.const 0 + local.set $15 + loop $for-loop|02941 + local.get $11 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 + local.get $9 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - local.get $8 + call $~lib/typedarray/Int32Array#__set + local.get $7 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $8 + call $~lib/typedarray/Int32Array#__set + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|0123 + local.set $15 + br $for-loop|02941 end end - local.get $1 + i32.const 0 + local.set $0 + local.get $9 i32.load offset=4 - local.get $1 + local.set $5 + local.get $9 i32.load offset=8 - call $~lib/util/bytes/REVERSE + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $1 + i32.load + local.set $2 + local.get $1 + local.get $3 + local.get $0 + i32.sub + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $1 + i32.load + i32.store + local.get $1 + local.get $2 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + end i32.const 0 - local.set $8 - loop $for-loop|1124 - local.get $2 - local.get $8 + local.set $15 + loop $for-loop|132 + local.get $11 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 - call $~lib/typedarray/Uint8Array#__get + local.get $9 + local.get $15 + call $~lib/typedarray/Int32Array#__get i32.const 7616 - local.get $2 + local.get $11 i32.const 1 i32.sub - local.get $8 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and i32.ne br_if $folding-inner31 - local.get $8 + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|1124 + local.set $15 + br $for-loop|132 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + i32.const 0 + local.set $1 + local.get $7 + i32.load offset=4 + local.set $5 + local.get $7 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0131 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0131 + end end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/bytes/REVERSE - local.get $0 + local.get $7 i32.store offset=16 - local.get $0 + local.get $7 i32.const 0 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 8 i32.ne br_if $folding-inner32 - local.get $0 + local.get $7 i32.const 1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 7 i32.ne br_if $folding-inner33 - local.get $0 + local.get $7 i32.const 2 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 6 i32.ne br_if $folding-inner34 - local.get $0 + local.get $7 i32.const 3 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 5 i32.ne br_if $folding-inner35 @@ -58109,8 +55967,6 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58121,126 +55977,219 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.tee $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.get $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $7 i32.store offset=8 - loop $for-loop|0125 - local.get $2 - local.get $8 + i32.const 0 + local.set $15 + loop $for-loop|037175 + local.get $11 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 + local.get $9 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - local.get $8 + call $~lib/typedarray/Uint32Array#__set + local.get $7 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $8 + call $~lib/typedarray/Uint32Array#__set + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|0125 + local.set $15 + br $for-loop|037175 end end - local.get $1 + i32.const 0 + local.set $0 + local.get $9 i32.load offset=4 - local.get $1 + local.set $5 + local.get $9 i32.load offset=8 - call $~lib/util/bytes/REVERSE + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0133 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $1 + i32.load + local.set $2 + local.get $1 + local.get $3 + local.get $0 + i32.sub + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $1 + i32.load + i32.store + local.get $1 + local.get $2 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0133 + end + end + end i32.const 0 - local.set $8 - loop $for-loop|1126 - local.get $2 - local.get $8 + local.set $15 + loop $for-loop|140 + local.get $11 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 - call $~lib/typedarray/Uint8ClampedArray#__get + local.get $9 + local.get $15 + call $~lib/typedarray/Uint32Array#__get i32.const 7616 - local.get $2 + local.get $11 i32.const 1 i32.sub - local.get $8 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and i32.ne br_if $folding-inner31 - local.get $8 + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|1126 + local.set $15 + br $for-loop|140 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $0 + call $~lib/typedarray/Uint32Array#subarray + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=12 - local.get $0 + i32.const 0 + local.set $1 + local.get $7 i32.load offset=4 - local.get $0 + local.set $5 + local.get $7 i32.load offset=8 - call $~lib/util/bytes/REVERSE - local.get $0 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0135 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0135 + end + end + end + local.get $7 i32.store offset=16 - local.get $0 + local.get $7 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint32Array#__get i32.const 8 i32.ne br_if $folding-inner32 - local.get $0 + local.get $7 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint32Array#__get i32.const 7 i32.ne br_if $folding-inner33 - local.get $0 + local.get $7 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint32Array#__get i32.const 6 i32.ne br_if $folding-inner34 - local.get $0 + local.get $7 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne br_if $folding-inner35 @@ -58248,8 +56197,6 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58260,127 +56207,229 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.tee $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.get $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 i32.store offset=8 - loop $for-loop|0127 - local.get $2 - local.get $8 + i32.const 0 + local.set $15 + loop $for-loop|045136 + local.get $9 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 + local.get $7 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - local.get $8 + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $5 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $8 + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|0127 + local.set $15 + br $for-loop|045136 end end - local.get $1 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $8 - loop $for-loop|1128 - local.get $2 - local.get $8 + local.set $0 + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0137 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $1 + i64.load + local.set $10 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $1 + i64.load + i64.store + local.get $1 + local.get $10 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0137 + end + end + end + i32.const 0 + local.set $15 + loop $for-loop|148 + local.get $9 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 - call $~lib/typedarray/Int16Array#__get + local.get $7 + local.get $15 + call $~lib/typedarray/Int64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $8 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.extend16_s - i32.ne + i64.extend_i32_s + i64.ne br_if $folding-inner31 - local.get $8 + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|1128 + local.set $15 + br $for-loop|148 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $0 + call $~lib/typedarray/Int64Array#subarray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $1 + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0139 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0139 + end + end + end + local.get $5 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne br_if $folding-inner32 - local.get $0 + local.get $5 i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne br_if $folding-inner33 - local.get $0 + local.get $5 i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne br_if $folding-inner34 - local.get $0 + local.get $5 i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58391,123 +56440,224 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.tee $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.get $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $5 i32.store offset=8 - loop $for-loop|0129 - local.get $2 - local.get $8 + i32.const 0 + local.set $15 + loop $for-loop|053140 + local.get $9 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 + local.get $7 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - local.get $8 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $5 + local.get $15 i32.const 7616 - local.get $8 + local.get $15 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $8 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|0129 + local.set $15 + br $for-loop|053140 + end + end + i32.const 0 + local.set $0 + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0142 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $1 + i64.load + local.set $10 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $1 + i64.load + i64.store + local.get $1 + local.get $10 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0142 + end end end - local.get $1 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $8 - loop $for-loop|1130 - local.get $2 - local.get $8 + local.set $15 + loop $for-loop|156 + local.get $9 + local.get $15 i32.gt_s if - local.get $1 - local.get $8 - call $~lib/typedarray/Uint16Array#__get + local.get $7 + local.get $15 + call $~lib/typedarray/Uint64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $8 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne + i64.extend_i32_s + i64.ne br_if $folding-inner31 - local.get $8 + local.get $15 i32.const 1 i32.add - local.set $8 - br $for-loop|1130 + local.set $15 + br $for-loop|156 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $0 + call $~lib/typedarray/Uint64Array#subarray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $1 + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0144 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0144 + end + end + end + local.get $5 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne br_if $folding-inner32 - local.get $0 + local.get $5 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne br_if $folding-inner33 - local.get $0 + local.get $5 i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne br_if $folding-inner34 - local.get $0 + local.get $5 i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 @@ -58523,14 +56673,9 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store @@ -58538,137 +56683,139 @@ i32.const 7628 i32.load local.tee $9 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 + call $~lib/typedarray/Float32Array#constructor + local.tee $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $9 - call $~lib/typedarray/Int32Array#constructor - local.tee $6 + call $~lib/typedarray/Float32Array#constructor + local.tee $5 i32.store offset=8 i32.const 0 - local.set $12 - loop $for-loop|0171 + local.set $15 + loop $for-loop|061 local.get $9 - local.get $12 + local.get $15 i32.gt_s if - local.get $8 - local.get $12 + local.get $7 + local.get $15 i32.const 7616 - local.get $12 + local.get $15 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $6 - local.get $12 + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $5 + local.get $15 i32.const 7616 - local.get $12 + local.get $15 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $12 + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|0171 + local.set $15 + br $for-loop|061 end end i32.const 0 - local.set $12 - local.get $8 + local.set $0 + local.get $7 i32.load offset=4 local.set $4 - local.get $8 + local.get $7 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u local.set $3 - local.get $0 + local.get $1 i32.const 1 i32.sub local.set $2 - loop $while-continue|0 + loop $while-continue|0145 + local.get $0 local.get $3 - local.get $12 - i32.gt_u + i32.lt_u if - local.get $12 + local.get $0 i32.const 2 i32.shl local.get $4 i32.add - local.tee $0 - i32.load - local.set $1 - local.get $0 + local.tee $1 + f32.load + local.set $6 + local.get $1 local.get $2 - local.get $12 + local.get $0 i32.sub i32.const 2 i32.shl local.get $4 i32.add - local.tee $0 - i32.load - i32.store - local.get $0 + local.tee $1 + f32.load + f32.store local.get $1 - i32.store - local.get $12 + local.get $6 + f32.store + local.get $0 i32.const 1 i32.add - local.set $12 - br $while-continue|0 + local.set $0 + br $while-continue|0145 end end end i32.const 0 - local.set $12 - loop $for-loop|1131 + local.set $15 + loop $for-loop|164 local.get $9 - local.get $12 + local.get $15 i32.gt_s if - local.get $8 - local.get $12 - call $~lib/typedarray/Int32Array#__get + local.get $7 + local.get $15 + call $~lib/typedarray/Float32Array#__get i32.const 7616 local.get $9 i32.const 1 i32.sub - local.get $12 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.ne + f32.convert_i32_s + f32.ne br_if $folding-inner31 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|1131 + local.set $15 + br $for-loop|164 end end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 4 + local.get $5 i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $6 + call $~lib/typedarray/Float32Array#subarray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=12 i32.const 0 - local.set $12 - local.get $6 + local.set $1 + local.get $5 i32.load offset=4 local.set $4 - local.get $6 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u @@ -58684,66 +56831,66 @@ i32.const 1 i32.sub local.set $2 - loop $while-continue|0133 + loop $while-continue|0147 + local.get $1 local.get $3 - local.get $12 - i32.gt_u + i32.lt_u if - local.get $12 + local.get $1 i32.const 2 i32.shl local.get $4 i32.add local.tee $0 - i32.load - local.set $1 + f32.load + local.set $6 local.get $0 local.get $2 - local.get $12 + local.get $1 i32.sub i32.const 2 i32.shl local.get $4 i32.add local.tee $0 - i32.load - i32.store + f32.load + f32.store local.get $0 + local.get $6 + f32.store local.get $1 - i32.store - local.get $12 i32.const 1 i32.add - local.set $12 - br $while-continue|0133 + local.set $1 + br $while-continue|0147 end end end - local.get $6 + local.get $5 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne br_if $folding-inner32 - local.get $6 + local.get $5 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne br_if $folding-inner33 - local.get $6 + local.get $5 i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne br_if $folding-inner34 - local.get $6 + local.get $5 i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 @@ -58759,14 +56906,9 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 7616 i32.store @@ -58774,138 +56916,142 @@ i32.const 7628 i32.load local.tee $9 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 + call $~lib/typedarray/Float64Array#constructor + local.tee $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $9 - call $~lib/typedarray/Uint32Array#constructor - local.tee $6 + call $~lib/typedarray/Float64Array#constructor + local.tee $5 i32.store offset=8 i32.const 0 - local.set $12 - loop $for-loop|021134 + local.set $15 + loop $for-loop|069148 local.get $9 - local.get $12 + local.get $15 i32.gt_s if - local.get $8 - local.get $12 + local.get $7 + local.get $15 i32.const 7616 - local.get $12 + local.get $15 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $6 - local.get $12 + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $5 + local.get $15 i32.const 7616 - local.get $12 + local.get $15 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $12 + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|021134 + local.set $15 + br $for-loop|069148 end end i32.const 0 - local.set $12 - local.get $8 + local.set $0 + local.get $7 i32.load offset=4 local.set $4 - local.get $8 + local.get $7 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u local.set $3 - local.get $0 + local.get $1 i32.const 1 i32.sub local.set $2 - loop $while-continue|0136 + loop $while-continue|0149 + local.get $0 local.get $3 - local.get $12 - i32.gt_u + i32.lt_u if - local.get $12 - i32.const 2 + local.get $0 + i32.const 3 i32.shl local.get $4 i32.add - local.tee $0 - i32.load - local.set $1 - local.get $0 + local.tee $1 + f64.load + local.set $8 + local.get $1 local.get $2 - local.get $12 + local.get $0 i32.sub - i32.const 2 + i32.const 3 i32.shl local.get $4 i32.add - local.tee $0 - i32.load - i32.store - local.get $0 + local.tee $1 + f64.load + f64.store local.get $1 - i32.store - local.get $12 + local.get $8 + f64.store + local.get $0 i32.const 1 i32.add - local.set $12 - br $while-continue|0136 + local.set $0 + br $while-continue|0149 end end end i32.const 0 - local.set $12 - loop $for-loop|124 + local.set $15 + loop $for-loop|172 local.get $9 - local.get $12 + local.get $15 i32.gt_s if - local.get $8 - local.get $12 - call $~lib/typedarray/Uint32Array#__get + local.get $7 + local.get $15 + call $~lib/typedarray/Float64Array#__get i32.const 7616 local.get $9 i32.const 1 i32.sub - local.get $12 + local.get $15 i32.sub call $~lib/array/Array#__get - i32.ne + f64.convert_i32_s + f64.ne br_if $folding-inner31 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|124 + local.set $15 + br $for-loop|172 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $6 + call $~lib/typedarray/Float64Array#subarray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=12 i32.const 0 - local.set $12 - local.get $6 + local.set $1 + local.get $5 i32.load offset=4 local.set $4 - local.get $6 + local.get $5 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u local.tee $0 i32.const 1 @@ -58919,75 +57065,71 @@ i32.const 1 i32.sub local.set $2 - loop $while-continue|0138 + loop $while-continue|0151 + local.get $1 local.get $3 - local.get $12 - i32.gt_u + i32.lt_u if - local.get $12 - i32.const 2 + local.get $1 + i32.const 3 i32.shl local.get $4 i32.add local.tee $0 - i32.load - local.set $1 + f64.load + local.set $8 local.get $0 local.get $2 - local.get $12 + local.get $1 i32.sub - i32.const 2 + i32.const 3 i32.shl local.get $4 i32.add local.tee $0 - i32.load - i32.store + f64.load + f64.store local.get $0 + local.get $8 + f64.store local.get $1 - i32.store - local.get $12 i32.const 1 i32.add - local.set $12 - br $while-continue|0138 + local.set $1 + br $while-continue|0151 end end end - local.get $6 + local.get $5 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne br_if $folding-inner32 - local.get $6 + local.get $5 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne br_if $folding-inner33 - local.get $6 + local.get $5 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne br_if $folding-inner34 - local.get $6 + local.get $5 i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> @@ -59026,7 +57168,7 @@ local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0139 + loop $while-continue|0152 local.get $0 local.get $3 i32.lt_s @@ -59045,7 +57187,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0139 + br $while-continue|0152 end end i32.const -1 @@ -59064,7 +57206,7 @@ end block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 - local.set $12 + local.set $15 i32.const 0 local.get $4 i32.load offset=8 @@ -59080,32 +57222,32 @@ local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|0140 + loop $while-continue|0153 local.get $1 - local.get $12 + local.get $15 i32.gt_s if i32.const 1 - local.get $12 + local.get $15 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.tee $7 + local.tee $8 f64.const nan:0x8000000000000 f64.eq - local.get $7 - local.get $7 + local.get $8 + local.get $8 f64.ne i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $while-continue|0140 + local.set $15 + br $while-continue|0153 end end i32.const 0 @@ -59146,7 +57288,7 @@ local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0141 + loop $while-continue|0154 local.get $0 local.get $3 i32.lt_s @@ -59165,7 +57307,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0141 + br $while-continue|0154 end end i32.const -1 @@ -59183,14 +57325,16 @@ unreachable end block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + i32.const 0 + local.set $1 i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 select i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -59198,32 +57342,32 @@ local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|029 + loop $while-continue|077 local.get $1 - local.get $13 - i32.gt_s + local.get $2 + i32.lt_s if i32.const 1 - local.get $13 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.tee $5 + local.tee $6 f32.const nan:0x400000 f32.eq - local.get $5 - local.get $5 + local.get $6 + local.get $6 f32.ne i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $13 + local.get $1 i32.const 1 i32.add - local.set $13 - br $while-continue|029 + local.set $1 + br $while-continue|077 end end i32.const 0 @@ -60291,43 +58435,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Int8Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|035142 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|083 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|035142 + local.set $15 + br $for-loop|083 end end global.get $~lib/memory/__stack_pointer @@ -60399,25 +58538,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|139 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|187 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Int8Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Int8Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|139 + local.set $15 + br $for-loop|187 end end global.get $~lib/memory/__stack_pointer @@ -60434,14 +58573,9 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store @@ -60453,25 +58587,25 @@ local.tee $2 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|044 + local.set $15 + loop $for-loop|092155 local.get $3 - local.get $12 + local.get $15 i32.gt_s if local.get $2 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|044 + local.set $15 + br $for-loop|092155 end end global.get $~lib/memory/__stack_pointer @@ -60504,25 +58638,25 @@ local.tee $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|149 + local.set $15 + loop $for-loop|197 local.get $3 - local.get $12 + local.get $15 i32.gt_s if local.get $2 - local.get $12 + local.get $15 call $~lib/typedarray/Uint8Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Uint8Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|149 + local.set $15 + br $for-loop|197 end end global.get $~lib/memory/__stack_pointer @@ -60539,44 +58673,39 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|054 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0102156 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|054 + local.set $15 + br $for-loop|0102156 end end global.get $~lib/memory/__stack_pointer @@ -60648,25 +58777,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|159 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1107 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Uint8ClampedArray#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|159 + local.set $15 + br $for-loop|1107 end end global.get $~lib/memory/__stack_pointer @@ -60683,43 +58812,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Int16Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|064200 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0112158 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|064200 + local.set $15 + br $for-loop|0112158 end end global.get $~lib/memory/__stack_pointer @@ -60793,25 +58917,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|169 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1117 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Int16Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Int16Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|169 + local.set $15 + br $for-loop|1117 end end global.get $~lib/memory/__stack_pointer @@ -60828,44 +58952,39 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Uint16Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|074 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0122 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|074 + local.set $15 + br $for-loop|0122 end end global.get $~lib/memory/__stack_pointer @@ -60939,25 +59058,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|179 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1127161 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Uint16Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Uint16Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|179 + local.set $15 + br $for-loop|1127161 end end global.get $~lib/memory/__stack_pointer @@ -60974,42 +59093,37 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Int32Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|084146 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0132 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|084146 + local.set $15 + br $for-loop|0132 end end global.get $~lib/memory/__stack_pointer @@ -61083,25 +59197,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|189 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1137 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Int32Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Int32Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|189 + local.set $15 + br $for-loop|1137 end end global.get $~lib/memory/__stack_pointer @@ -61118,42 +59232,37 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Uint32Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|094148 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0142 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|094148 + local.set $15 + br $for-loop|0142 end end global.get $~lib/memory/__stack_pointer @@ -61227,25 +59336,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|199 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1147 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Uint32Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Uint32Array#__get i32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|199 + local.set $15 + br $for-loop|1147 end end global.get $~lib/memory/__stack_pointer @@ -61262,43 +59371,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Int64Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|0104 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0152 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|0104 + local.set $15 + br $for-loop|0152 end end global.get $~lib/memory/__stack_pointer @@ -61372,25 +59476,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|1109 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1157 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Int64Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Int64Array#__get i64.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|1109 + local.set $15 + br $for-loop|1157 end end global.get $~lib/memory/__stack_pointer @@ -61407,43 +59511,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Uint64Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|0114151 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0162 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|0114151 + local.set $15 + br $for-loop|0162 end end global.get $~lib/memory/__stack_pointer @@ -61517,25 +59616,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|1119 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1167 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Uint64Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Uint64Array#__get i64.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|1119 + local.set $15 + br $for-loop|1167 end end global.get $~lib/memory/__stack_pointer @@ -61552,43 +59651,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Float32Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|0124 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0172 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|0124 + local.set $15 + br $for-loop|0172 end end global.get $~lib/memory/__stack_pointer @@ -61662,25 +59756,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|1129 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1177 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Float32Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Float32Array#__get f32.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|1129 + local.set $15 + br $for-loop|1177 end end global.get $~lib/memory/__stack_pointer @@ -61697,43 +59791,38 @@ br_if $folding-inner21 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 10928 i32.store local.get $0 i32.const 10940 i32.load - local.tee $6 + local.tee $5 call $~lib/typedarray/Float64Array#constructor local.tee $4 i32.store offset=4 i32.const 0 - local.set $12 - loop $for-loop|0134 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|0182 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 i32.const 10928 - local.get $12 + local.get $15 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|0134 + local.set $15 + br $for-loop|0182 end end global.get $~lib/memory/__stack_pointer @@ -61807,25 +59896,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $12 - loop $for-loop|1139 - local.get $6 - local.get $12 + local.set $15 + loop $for-loop|1187 + local.get $5 + local.get $15 i32.gt_s if local.get $4 - local.get $12 + local.get $15 call $~lib/typedarray/Float64Array#__get local.get $0 - local.get $12 + local.get $15 call $~lib/typedarray/Float64Array#__get f64.ne br_if $folding-inner19 - local.get $12 + local.get $15 i32.const 1 i32.add - local.set $12 - br $for-loop|1139 + local.set $15 + br $for-loop|1187 end end global.get $~lib/memory/__stack_pointer @@ -61846,7 +59935,7 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $6 + local.tee $7 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3 @@ -61868,38 +59957,38 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $4 i32.store offset=8 - local.get $3 + local.get $4 i32.const 0 i64.const -10 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 100 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 10 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 3 i64.const 300 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $5 i32.store offset=16 - local.get $4 + local.get $5 i32.const 0 i32.const 300 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set - local.get $6 + local.get $7 i32.load offset=8 local.get $0 i32.load offset=8 @@ -61909,65 +59998,63 @@ i32.add i32.lt_s br_if $folding-inner22 - local.get $6 + local.get $7 i32.load offset=4 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $0 i32.load offset=4 - local.set $1 + local.set $2 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 i32.const 0 - local.set $13 - loop $for-loop|0145 + local.set $1 + loop $for-loop|0193 local.get $0 - local.get $13 + local.get $1 i32.gt_s if - local.get $2 - local.get $13 + local.get $1 + local.get $3 i32.add - local.get $13 + f32.const 0 + f32.const 255 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.tee $5 - local.get $5 + local.tee $6 + f32.min + f32.max + i32.trunc_sat_f32_u + i32.const 0 + local.get $6 + local.get $6 f32.sub f32.const 0 f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $5 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end + select i32.store8 - local.get $13 + local.get $1 i32.const 1 i32.add - local.set $13 - br $for-loop|0145 + local.set $1 + br $for-loop|0193 end end - local.get $6 - local.get $3 + local.get $7 + local.get $4 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $6 + local.get $7 i32.load offset=8 - local.get $4 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u @@ -61975,34 +60062,34 @@ i32.add i32.lt_s br_if $folding-inner22 - local.get $6 + local.get $7 i32.load offset=4 i32.const 8 i32.add - local.set $3 - local.get $4 + local.set $4 + local.get $5 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 i32.const 0 - local.set $13 - loop $for-loop|0151 + local.set $1 + loop $for-loop|0199 local.get $1 - local.get $13 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $3 - local.get $13 + local.get $1 + local.get $4 i32.add i32.const 255 - local.get $13 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.tee $0 @@ -62018,11 +60105,11 @@ i32.xor i32.and i32.store8 - local.get $13 + local.get $1 i32.const 1 i32.add - local.set $13 - br $for-loop|0151 + local.set $1 + br $for-loop|0199 end end i32.const 10 @@ -62034,7 +60121,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $6 + local.get $7 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -62061,25 +60148,25 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 i32.const 0 i32.const -10 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 100 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 10 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 3 i32.const 300 call $~lib/typedarray/Int16Array#__set - local.get $6 + local.get $7 i32.load offset=8 local.get $0 i32.load offset=8 @@ -62087,32 +60174,32 @@ i32.shr_u i32.lt_s br_if $folding-inner22 - local.get $6 + local.get $7 i32.load offset=4 - local.set $3 + local.set $4 local.get $0 i32.load offset=4 - local.set $2 + local.set $3 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 i32.const 0 - local.set $13 - loop $for-loop|0157 + local.set $1 + loop $for-loop|0205 local.get $1 - local.get $13 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $3 - local.get $13 + local.get $1 + local.get $4 i32.add i32.const 255 - local.get $13 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.tee $0 @@ -62121,15 +60208,15 @@ i32.gt_u select i32.store8 - local.get $13 + local.get $1 i32.const 1 i32.add - local.set $13 - br $for-loop|0157 + local.set $1 + br $for-loop|0205 end end - local.get $6 - local.get $4 + local.get $7 + local.get $5 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> i32.const 10 @@ -62141,7 +60228,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $6 + local.get $7 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 0 @@ -62319,11 +60406,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1157 - block $0of1158 - block $outOfRange159 + block $1of1170 + block $0of1171 + block $outOfRange172 global.get $~argumentsLength - br_table $0of1158 $1of1157 $outOfRange159 + br_table $0of1171 $1of1170 $outOfRange172 end unreachable end @@ -62445,11 +60532,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1161 - block $0of1162 - block $outOfRange163 + block $1of1174 + block $0of1175 + block $outOfRange176 global.get $~argumentsLength - br_table $0of1162 $1of1161 $outOfRange163 + br_table $0of1175 $1of1174 $outOfRange176 end unreachable end @@ -63528,12 +61615,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0161 + loop $while-continue|0209 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0161 + br $while-continue|0209 end end end @@ -64368,20 +62455,20 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 local.get $0 i32.load - local.tee $5 + local.tee $4 i32.store - local.get $5 + local.get $4 if - local.get $4 local.get $5 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $5 local.get $0 i32.load offset=4 local.get $1 @@ -64410,7 +62497,7 @@ i32.shl i32.add i32.store offset=4 - local.get $4 + local.get $5 local.get $2 i32.const 0 i32.lt_s @@ -64447,7 +62534,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64481,20 +62568,20 @@ i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 local.get $0 i32.load - local.tee $5 + local.tee $4 i32.store - local.get $5 + local.get $4 if - local.get $4 local.get $5 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $5 local.get $0 i32.load offset=4 local.get $1 @@ -64523,7 +62610,7 @@ i32.shl i32.add i32.store offset=4 - local.get $4 + local.get $5 local.get $2 i32.const 0 i32.lt_s @@ -64560,7 +62647,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -64635,37 +62722,37 @@ local.get $0 local.get $1 i32.shl - local.tee $1 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.set $5 + local.set $1 local.get $3 if - local.get $5 - local.get $3 local.get $1 - call $~lib/memory/memory.copy + local.get $3 + local.get $5 + memory.copy end local.get $4 - local.get $5 + local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new local.tee $2 - local.get $5 + local.get $1 i32.store - local.get $5 + local.get $1 if local.get $2 - local.get $5 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $2 - local.get $5 + local.get $1 i32.store offset=4 local.get $2 - local.get $1 + local.get $5 i32.store offset=8 local.get $2 local.get $0 @@ -64706,20 +62793,20 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 local.get $0 i32.load - local.tee $5 + local.tee $4 i32.store - local.get $5 + local.get $4 if - local.get $4 local.get $5 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $5 local.get $0 i32.load offset=4 local.get $1 @@ -64746,7 +62833,7 @@ local.tee $0 i32.add i32.store offset=4 - local.get $4 + local.get $5 local.get $2 i32.const 0 i32.lt_s @@ -64781,7 +62868,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64875,7 +62962,7 @@ local.get $2 i32.const 2 i32.shl - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -64910,208 +62997,208 @@ local.set $2 local.get $3 i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - if - local.get $3 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.set $2 - local.get $3 - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $4 - if - local.get $3 - local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - local.get $3 - i32.const 12 - i32.const 6 + i32.const 4 call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + local.get $0 + i32.load local.tee $3 i32.store local.get $3 + if + local.get $4 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 - i32.load + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + local.set $2 + local.get $3 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new local.tee $4 i32.store local.get $4 + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $4 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 local.get $3 + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + if + local.get $4 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65125,7 +63212,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65162,7 +63249,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65196,20 +63283,20 @@ i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65223,7 +63310,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65260,7 +63347,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65294,20 +63381,20 @@ i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65321,7 +63408,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65358,7 +63445,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65392,20 +63479,20 @@ i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65419,7 +63506,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65456,7 +63543,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65490,20 +63577,20 @@ i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65517,7 +63604,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65554,7 +63641,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65588,20 +63675,20 @@ i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -65615,7 +63702,7 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -65652,7 +63739,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -65864,7 +63951,7 @@ local.get $3 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -66042,7 +64129,7 @@ local.get $2 i32.const 9808 local.get $1 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -66178,7 +64265,7 @@ local.get $1 i32.add local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index ba08ab3b20..e877cd07a4 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -297,7 +297,7 @@ testInstantiate(5); assert(subsliced.byteLength == 4); let copy = arr.slice(); - assert(copy !== arr); + assert(copy != arr); assert(copy.length == arr.length); assert(copy.byteOffset == arr.byteOffset); assert(copy.byteLength == arr.byteLength); diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.debug.wat similarity index 79% rename from tests/compiler/std/uri.untouched.wat rename to tests/compiler/std/uri.debug.wat index db02ab3292..deb0cd39d9 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.debug.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -24,8 +24,8 @@ (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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL 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)) @@ -2132,237 +2132,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2412,1281 +2181,28 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load i32.const 3 + i32.const -1 + i32.xor i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.const 16 + i32.sub + i32.le_u if local.get $2 local.get $1 @@ -3710,7 +2226,7 @@ local.get $5 i32.lt_u select - call $~lib/memory/memory.copy + memory.copy local.get $3 ) (func $~lib/util/uri/storeHex (param $0 i32) (param $1 i32) (param $2 i32) @@ -3849,7 +2365,7 @@ i32.shl i32.add local.get $11 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $11 i32.add @@ -4423,7 +2939,7 @@ i32.shl i32.add local.get $9 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $9 i32.add @@ -5097,11 +3613,21 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 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.ne + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -5115,11 +3641,21 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 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.ne + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.__eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.release.wat similarity index 74% rename from tests/compiler/std/uri.optimized.wat rename to tests/compiler/std/uri.release.wat index b47cc855eb..d057861e87 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.release.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -20,135 +20,69 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20748)) (memory $0 1) - (data (i32.const 1036) "\1c") - (data (i32.const 1048) "\01") - (data (i32.const 1069) "\01\01\01\01\01\00\00\00\00\01\01\00\00\01") - (data (i32.const 1093) "\01\01\01\01\01\01\01") - (data (i32.const 1126) "\01\01\01\01\00\01") - (data (i32.const 1158) "\01\01\01") - (data (i32.const 1164) "<") - (data (i32.const 1176) "\01\00\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 (i32.const 1228) "<") - (data (i32.const 1240) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1356) "<") - (data (i32.const 1368) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1420) ",") - (data (i32.const 1432) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1500) "<") - (data (i32.const 1512) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1564) ",") - (data (i32.const 1576) "\01\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d") - (data (i32.const 1612) "<") - (data (i32.const 1624) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s") + (data (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01") + (data (i32.const 1069) "\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") + (data (i32.const 1164) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\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 (i32.const 1228) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1356) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1500) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d") + (data (i32.const 1612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s") (data (i32.const 1676) "0123456789ABCDEF") - (data (i32.const 1692) ",") - (data (i32.const 1704) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s") - (data (i32.const 1740) "\1c") - (data (i32.const 1752) "\01\00\00\00\02\00\00\00a") - (data (i32.const 1772) "\1c") - (data (i32.const 1784) "\01\00\00\00\04\00\00\00a\001") - (data (i32.const 1804) "\1c") - (data (i32.const 1816) "\01\00\00\00\06\00\00\00a\00b\00_") - (data (i32.const 1836) "\\") - (data (i32.const 1848) "\01\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 (i32.const 1932) "\1c") - (data (i32.const 1944) "\01\00\00\00\02") - (data (i32.const 1964) "\1c") - (data (i32.const 1976) "\01\00\00\00\06\00\00\00%\000\000") - (data (i32.const 1996) "\1c") - (data (i32.const 2008) "\01\00\00\00\02\00\00\00+") - (data (i32.const 2028) "\1c") - (data (i32.const 2040) "\01\00\00\00\06\00\00\00%\002\00B") - (data (i32.const 2060) "\1c") - (data (i32.const 2072) "\01\00\00\00\06\00\00\00#\000\00=") - (data (i32.const 2092) ",") - (data (i32.const 2104) "\01\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D") - (data (i32.const 2140) "\1c") - (data (i32.const 2152) "\01\00\00\00\n\00\00\00 \001\002\003\00 ") - (data (i32.const 2172) ",") - (data (i32.const 2184) "\01\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000") - (data (i32.const 2220) "\1c") - (data (i32.const 2232) "\01\00\00\00\04\00\00\00?\00+") - (data (i32.const 2252) "\1c") - (data (i32.const 2264) "\01\00\00\00\0c\00\00\00%\003\00F\00%\002\00B") - (data (i32.const 2284) "\1c") - (data (i32.const 2296) "\01\00\00\00\n\00\00\00-\00?\001\00.\00-") - (data (i32.const 2316) ",") - (data (i32.const 2328) "\01\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-") - (data (i32.const 2364) "\1c") - (data (i32.const 2376) "\01\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") - (data (i32.const 2396) "\\") - (data (i32.const 2408) "\01\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 (i32.const 2492) "\1c") - (data (i32.const 2504) "\01\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6") - (data (i32.const 2524) "l") - (data (i32.const 2536) "\01\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 (i32.const 2636) "\1c") - (data (i32.const 2648) "\01\00\00\00\06\00\00\00~\00\7f\00\80") - (data (i32.const 2668) ",") - (data (i32.const 2680) "\01\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000") - (data (i32.const 2716) "\1c") - (data (i32.const 2728) "\01\00\00\00\04\00\00\00\00\d8\ff\df") - (data (i32.const 2748) ",") - (data (i32.const 2760) "\01\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F") - (data (i32.const 2796) "\1c") - (data (i32.const 2808) "\01\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc") - (data (i32.const 2828) "L") - (data (i32.const 2840) "\01\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 (i32.const 2908) "\1c") - (data (i32.const 2920) "\01\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\0d") - (data (i32.const 2940) "<") - (data (i32.const 2952) "\01\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D") - (data (i32.const 3004) ",") - (data (i32.const 3016) "\01\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,") - (data (i32.const 3052) "L") - (data (i32.const 3064) "\01\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 (i32.const 3132) "l") - (data (i32.const 3144) "\01\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 (i32.const 3244) "\8c") - (data (i32.const 3256) "\01\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 (i32.const 3389) "\01\00\00\01") - (data (i32.const 3415) "\01\00\01") - (data (i32.const 3446) "\01\01\01\01\00\01") - (data (i32.const 3478) "\01\01\01") - (data (i32.const 3484) ",") - (data (i32.const 3496) "\01\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#") - (data (i32.const 3532) "\1c") - (data (i32.const 3544) "\01\00\00\00\02\00\00\00 ") - (data (i32.const 3564) "\1c") - (data (i32.const 3576) "\01\00\00\00\06\00\00\00%\002\000") - (data (i32.const 3596) "\01\01\00\01\00\00\00\00\01\01\00\00\01") - (data (i32.const 3619) "\01\01\00\01\00\01\01") - (data (i32.const 3628) "\1c") - (data (i32.const 3640) "\01\00\00\00\06\00\00\00%\002\006") - (data (i32.const 3660) "\1c") - (data (i32.const 3672) "\01\00\00\00\02\00\00\00&") - (data (i32.const 3692) "\1c") - (data (i32.const 3704) "\01\00\00\00\06\00\00\00%\005\00E") - (data (i32.const 3724) "\1c") - (data (i32.const 3736) "\01\00\00\00\02\00\00\00^") - (data (i32.const 3756) "\1c") - (data (i32.const 3768) "\01\00\00\00\02\00\00\00\00\d8") - (data (i32.const 3788) "L") - (data (i32.const 3800) "\01\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 (i32.const 3868) ",") - (data (i32.const 3880) "\01\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#") - (data (i32.const 3916) "L") - (data (i32.const 3928) "\01\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 (i32.const 3996) "|") - (data (i32.const 4008) "\01\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 (i32.const 4124) "\1c") - (data (i32.const 4136) "\01\00\00\00\0c\00\00\00%\00D\00F\00%\008\000") - (data (i32.const 4156) "\1c") - (data (i32.const 4168) "\01\00\00\00\02\00\00\00\c0\07") - (data (i32.const 4188) "\1c") - (data (i32.const 4200) "\01\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F") - (data (i32.const 4220) "\1c") - (data (i32.const 4232) "\01\00\00\00\02\00\00\00\bf") - (data (i32.const 4252) ",") - (data (i32.const 4264) "\01\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V") - (data (i32.const 4300) "\1c") - (data (i32.const 4312) "\01\00\00\00\06\00\00\00\f4\00\b8\00\ef") + (data (i32.const 1692) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s") + (data (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\001") + (data (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00_") + (data (i32.const 1836) "\\\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00%\000\000") + (data (i32.const 1996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") + (data (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00%\002\00B") + (data (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00#\000\00=") + (data (i32.const 2092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D") + (data (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \001\002\003\00 ") + (data (i32.const 2172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000") + (data (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00?\00+") + (data (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00%\003\00F\00%\002\00B") + (data (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\00?\001\00.\00-") + (data (i32.const 2316) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-") + (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") + (data (i32.const 2396) "\\\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6") + (data (i32.const 2524) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00~\00\7f\00\80") + (data (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000") + (data (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\ff\df") + (data (i32.const 2748) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F") + (data (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc") + (data (i32.const 2828) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\0d") + (data (i32.const 2940) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D") + (data (i32.const 3004) ",\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,") + (data (i32.const 3052) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3132) "l\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3244) "\8c\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3389) "\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") + (data (i32.const 3484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#") + (data (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00 ") + (data (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00%\002\000") + (data (i32.const 3596) "\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 (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00%\002\006") + (data (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00&") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00%\005\00E") + (data (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00^") + (data (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\d8") + (data (i32.const 3788) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3868) ",\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#") + (data (i32.const 3916) "L\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 3996) "|\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00%\00D\00F\00%\008\000") + (data (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c0\07") + (data (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F") + (data (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\bf") + (data (i32.const 4252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V") + (data (i32.const 4300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\f4\00\b8\00\ef") (data (i32.const 4336) "\03\00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) @@ -1248,7 +1182,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 + local.set $4 local.get $0 i32.const 16 i32.add @@ -1263,7 +1197,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 12 local.get $2 i32.const 19 @@ -1276,7 +1210,7 @@ i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1284,7 +1218,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1295,16 +1229,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1315,16 +1249,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1332,7 +1266,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1340,8 +1274,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1358,7 +1292,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1368,13 +1302,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1387,40 +1321,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1434,1101 +1368,57 @@ i32.add local.tee $3 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 - local.set $1 - block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $3 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store8 offset=3 - local.get $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $1 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $0 - i32.add - local.tee $3 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $3 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $1 - local.get $1 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.sub - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32 - i32.ge_u - if - local.get $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 32 - i32.sub - local.set $0 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 + i32.load + i32.const -3 + i32.and + i32.store end local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end local.get $2 - i32.const 1 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end + 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/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2565,7 +1455,7 @@ local.get $1 i32.gt_u select - call $~lib/memory/memory.copy + memory.copy local.get $2 ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -2659,7 +1549,7 @@ local.get $0 i32.add local.get $9 - call $~lib/memory/memory.copy + memory.copy local.get $7 local.get $9 i32.add @@ -2669,9 +1559,6 @@ i32.le_u br_if $while-break|0 end - local.get $8 - i32.const 6 - i32.const 24 local.get $6 i32.const 55296 i32.ge_u @@ -2746,6 +1633,9 @@ end local.set $6 end + local.get $8 + i32.const 6 + i32.const 24 local.get $6 i32.const 128 i32.lt_u @@ -3210,7 +2100,7 @@ i32.const 1 i32.shl local.tee $4 - call $~lib/memory/memory.copy + memory.copy local.get $4 local.get $6 i32.add @@ -3893,7 +2783,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 2080 - i32.store + i32.store offset=8 i32.const 2080 i32.const 2076 i32.load @@ -3901,8 +2791,17 @@ i32.shr_u i32.const 1068 call $~lib/util/uri/encode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 2112 - i32.eq + i32.store offset=4 + local.get $0 + i32.const 2112 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1712 @@ -3913,7 +2812,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 2160 - i32.store + i32.store offset=8 i32.const 2160 i32.const 2156 i32.load @@ -3921,8 +2820,17 @@ i32.shr_u i32.const 1068 call $~lib/util/uri/encode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 2192 - i32.eq + i32.store offset=4 + local.get $0 + i32.const 2192 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1712 diff --git a/tests/compiler/std/uri.ts b/tests/compiler/std/uri.ts index df56861342..b165c8815b 100644 --- a/tests/compiler/std/uri.ts +++ b/tests/compiler/std/uri.ts @@ -11,8 +11,8 @@ assert( ); assert(encodeURIComponent("\0") == "%00"); assert(encodeURIComponent("+") == "%2B"); -assert(encodeURIComponent("#0=") !== "%230%3D"); -assert(encodeURIComponent(" 123 ") !== "%20123%20"); +assert(encodeURIComponent("#0=") == "%230%3D"); +assert(encodeURIComponent(" 123 ") == "%20123%20"); assert(encodeURIComponent("?+") == "%3F%2B"); assert(encodeURIComponent("-?1.-") == "-%3F1.-"); assert(encodeURIComponent("🇭🇺🍎") == "%F0%9F%87%AD%F0%9F%87%BA%F0%9F%8D%8E"); diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.debug.wat similarity index 91% rename from tests/compiler/super-inline.untouched.wat rename to tests/compiler/super-inline.debug.wat index b144116759..7493621c87 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -22,8 +22,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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)) @@ -2064,237 +2063,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2344,7 +2112,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $super-inline/Foo#a (param $0 i32) (result i32) diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.release.wat similarity index 99% rename from tests/compiler/super-inline.optimized.wat rename to tests/compiler/super-inline.release.wat index 89fc32701f..42e805b3ae 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.release.wat @@ -1231,6 +1231,11 @@ local.get $1 i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.debug.wat similarity index 100% rename from tests/compiler/switch.untouched.wat rename to tests/compiler/switch.debug.wat diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.release.wat similarity index 100% rename from tests/compiler/switch.optimized.wat rename to tests/compiler/switch.release.wat diff --git a/tests/compiler/tablebase.untouched.wat b/tests/compiler/tablebase.debug.wat similarity index 97% rename from tests/compiler/tablebase.untouched.wat rename to tests/compiler/tablebase.debug.wat index 6b13412c68..d7ab0cbcb6 100644 --- a/tests/compiler/tablebase.untouched.wat +++ b/tests/compiler/tablebase.debug.wat @@ -4,7 +4,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $tablebase/staticFunction i32 (i32.const 32)) - (global $~lib/ASC_TABLE_BASE 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 16476)) (global $~lib/memory/__heap_base i32 (i32.const 16476)) diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.release.wat similarity index 100% rename from tests/compiler/tablebase.optimized.wat rename to tests/compiler/tablebase.release.wat diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.debug.wat similarity index 82% rename from tests/compiler/templateliteral.untouched.wat rename to tests/compiler/templateliteral.debug.wat index 23a8ef1f66..1f9fc01674 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.debug.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -20,7 +20,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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)) @@ -31,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -2178,1644 +2178,160 @@ i32.add local.get $1 local.set $5 - local.get $5 - i32.const 4 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - i32.const 1 - drop - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - drop - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=16 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 192 - i32.const 256 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:rtId - local.get $2 - local.get $0 - call $~lib/rt/itcms/Object#set:rtSize - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $2 - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.set $3 - local.get $3 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $3 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + i32.const 528 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable end end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 192 + i32.const 256 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + memory.fill + local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -4954,7 +3470,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -4991,7 +3507,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -5098,7 +3614,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -5312,7 +3828,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 @@ -5814,14 +4330,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 32 local.tee $0 @@ -5944,14 +4455,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill i32.const 1 local.set $0 i32.const 2 @@ -6099,14 +4605,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill f64.const 1 local.set $0 f64.const 2 @@ -6252,14 +4753,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill i32.const 2 local.set $0 global.get $~lib/memory/__stack_pointer @@ -6518,17 +5014,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.const 32 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 1 @@ -6678,14 +5166,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 @@ -6763,14 +5246,9 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 4528 @@ -6885,13 +5363,13 @@ local.get $5 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.get $2 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy local.get $5 local.set $6 global.get $~lib/memory/__stack_pointer @@ -7049,7 +5527,7 @@ local.get $11 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $11 i32.add @@ -7066,7 +5544,7 @@ local.get $9 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $8 local.get $9 i32.add @@ -7102,7 +5580,7 @@ call $~lib/string/String#get:length i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end local.get $10 local.set $12 @@ -7353,7 +5831,7 @@ local.get $2 i32.const 2896 local.get $1 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/templateliteral.json b/tests/compiler/templateliteral.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/templateliteral.json +++ b/tests/compiler/templateliteral.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.release.wat similarity index 76% rename from tests/compiler/templateliteral.optimized.wat rename to tests/compiler/templateliteral.release.wat index 9ba2ab6fb4..69766b9fd5 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.release.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) @@ -40,100 +40,59 @@ (data (i32.const 1176) "\01") (data (i32.const 1196) "<") (data (i32.const 1208) "\01\00\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 (i32.const 1260) "<") - (data (i32.const 1272) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1260) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") (data (i32.const 1388) "<") (data (i32.const 1400) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 1452) ",") (data (i32.const 1464) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1532) "<") (data (i32.const 1544) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1596) "\1c") - (data (i32.const 1608) "\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1628) "\1c") - (data (i32.const 1640) "\01\00\00\00\06\00\00\00(\00A\00=") - (data (i32.const 1660) "\1c") - (data (i32.const 1672) "\01\00\00\00\08\00\00\00,\00 \00B\00=") - (data (i32.const 1692) "\1c") - (data (i32.const 1704) "\01\00\00\00\02\00\00\00)") - (data (i32.const 1724) ",") - (data (i32.const 1736) "\03\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 (i32.const 1772) ",") - (data (i32.const 1784) "\01\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)") - (data (i32.const 1820) "|") - (data (i32.const 1832) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1948) "<") - (data (i32.const 1960) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\02\00\00\000") + (data (i32.const 1596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 1628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00(\00A\00=") + (data (i32.const 1660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00,\00 \00B\00=") + (data (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00)") + (data (i32.const 1724) ",\00\00\00\00\00\00\00\00\00\00\00\03\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 (i32.const 1772) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)") + (data (i32.const 1820) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") (data (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 (i32.const 2444) "\1c\04") - (data (i32.const 2456) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 3500) "\\") - (data (i32.const 3512) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 3596) "\1c") - (data (i32.const 3608) "\01\00\00\00\02\00\00\001") - (data (i32.const 3628) "\1c") - (data (i32.const 3640) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 3660) ",") - (data (i32.const 3672) "\03\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 (i32.const 3708) ",") - (data (i32.const 3720) "\01\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)") - (data (i32.const 3756) "\1c") - (data (i32.const 3768) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 3788) "\1c") - (data (i32.const 3800) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 3820) ",") - (data (i32.const 3832) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3868) ",") - (data (i32.const 3880) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 2444) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3500) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") + (data (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002") + (data (i32.const 3660) ",\00\00\00\00\00\00\00\00\00\00\00\03\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 (i32.const 3708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)") + (data (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 3788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 3820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 3868) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (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_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -2933,7 +1848,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $6 i32.add @@ -2950,7 +1865,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $1 local.get $2 i32.add @@ -2988,7 +1903,7 @@ i32.shr_u i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy end global.get $~lib/memory/__stack_pointer i32.const 12 @@ -3645,6 +2560,7 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $2 i32.eqz if @@ -3723,7 +2639,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 @@ -3751,7 +2667,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 3014704 i32.store @@ -3783,68 +2699,69 @@ local.get $1 i32.const 1 i32.eq - if (result i32) + if local.get $0 i32.const 101 i32.store16 offset=2 local.get $0 i32.const 4 i32.add + local.tee $2 local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -3854,13 +2771,12 @@ i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $2 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select - i32.store16 offset=4 - local.get $1 + i32.store16 else local.get $0 i32.const 4 @@ -3874,26 +2790,27 @@ local.tee $2 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 local.get $0 local.get $2 i32.add - local.tee $2 + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $2 + local.get $0 i32.const 4 i32.add + local.tee $4 local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $2 if i32.const 0 local.get $0 @@ -3951,16 +2868,18 @@ i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $4 i32.const 45 i32.const 43 - local.get $3 + local.get $2 select - i32.store16 offset=4 + i32.store16 local.get $0 local.get $1 i32.add + local.set $1 end + local.get $1 i32.const 2 i32.add end @@ -4069,7 +2988,7 @@ f64.const 347 f64.add local.tee $0 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.tee $7 local.get $0 local.get $7 @@ -4105,37 +3024,36 @@ local.tee $1 i64.const 4294967295 i64.and - local.set $3 + local.set $4 local.get $1 i64.const 32 i64.shr_u - local.tee $9 + local.tee $1 global.get $~lib/util/number/_frc_pow - local.tee $10 + local.tee $9 i64.const 4294967295 i64.and - local.tee $11 - local.tee $1 + local.tee $10 i64.mul - local.get $1 - local.get $3 + local.get $4 + local.get $10 i64.mul i64.const 32 i64.shr_u i64.add - local.set $4 + local.set $11 global.get $~lib/util/number/_frc_plus - local.tee $1 + local.tee $3 i64.const 4294967295 i64.and local.set $12 - local.get $1 + local.get $3 i64.const 32 i64.shr_u - local.tee $1 - local.get $11 + local.tee $3 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $12 i64.mul i64.const 32 @@ -4151,35 +3069,34 @@ i64.const 32 i64.shr_u local.tee $13 - local.get $11 + local.get $10 i64.mul - local.get $11 + local.get $10 local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $11 + local.set $10 local.get $2 i32.const 1 i32.shl i32.const 3920 i32.add + local.get $1 local.get $9 - local.get $10 i64.const 32 i64.shr_u local.tee $9 - local.tee $10 i64.mul - local.get $4 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $10 - i64.mul local.get $4 + local.get $9 + i64.mul + local.get $11 i64.const 4294967295 i64.and i64.add @@ -4188,7 +3105,7 @@ i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 local.get $9 i64.mul local.get $5 @@ -4219,14 +3136,14 @@ local.get $9 local.get $13 i64.mul - local.get $11 + local.get $10 i64.const 32 i64.shr_u i64.add local.get $9 local.get $14 i64.mul - local.get $11 + local.get $10 i64.const 4294967295 i64.and i64.add @@ -4326,7 +3243,7 @@ local.get $1 i32.const 3920 local.get $2 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -4382,14 +3299,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill local.get $0 i32.const 1056 i32.store @@ -4488,15 +3400,9 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill i32.const 1 call $~lib/number/I32#toString local.set $0 @@ -4616,15 +3522,9 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 + i32.const 0 + i32.const 24 + memory.fill f64.const 1 call $~lib/number/F64#toString local.set $0 @@ -4746,17 +3646,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.const 32 + memory.fill local.get $0 i32.const 1 call $templateliteral/Ref#constructor @@ -4887,14 +3779,9 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 5552 i32.store @@ -4991,17 +3878,17 @@ i32.load offset=16 local.get $0 i32.add - local.set $2 + local.set $1 loop $while-continue|0 local.get $0 - local.get $2 + local.get $1 i32.lt_u if local.get $0 i32.load - local.tee $1 + local.tee $2 if - local.get $1 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 @@ -5062,14 +3949,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $0 i32.const 1088 i32.store @@ -5314,14 +4196,9 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 i32.const 0 - i32.store offset=16 + i32.const 20 + memory.fill local.get $1 local.get $0 i32.load offset=4 @@ -5436,13 +4313,13 @@ local.get $4 local.get $0 local.get $2 - call $~lib/memory/memory.copy + memory.copy local.get $2 local.get $4 i32.add local.get $1 local.get $3 - call $~lib/memory/memory.copy + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.debug.wat similarity index 100% rename from tests/compiler/ternary.untouched.wat rename to tests/compiler/ternary.debug.wat diff --git a/tests/compiler/ternary.optimized.wat b/tests/compiler/ternary.release.wat similarity index 100% rename from tests/compiler/ternary.optimized.wat rename to tests/compiler/ternary.release.wat diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.debug.wat similarity index 99% rename from tests/compiler/throw.untouched.wat rename to tests/compiler/throw.debug.wat index 3ab9afb46d..a289eb954a 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.debug.wat @@ -20,7 +20,7 @@ (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/ASC_LOW_MEMORY_LIMIT 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 732)) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.release.wat similarity index 98% rename from tests/compiler/throw.optimized.wat rename to tests/compiler/throw.release.wat index 00cea386d3..57703faef9 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.release.wat @@ -642,11 +642,11 @@ return end global.get $~lib/rt/itcms/iter - local.tee $0 + local.tee $1 global.get $~lib/rt/itcms/toSpace i32.ne if - local.get $0 + local.get $1 i32.load offset=4 local.tee $3 i32.const -4 @@ -666,19 +666,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 18140 i32.lt_u if - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 else global.get $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -686,7 +686,7 @@ i32.add i32.sub global.set $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.const 4 i32.add local.tee $3 @@ -697,12 +697,12 @@ i32.eqz if memory.size - local.tee $0 + local.tee $1 i32.const 0 i32.le_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -720,11 +720,11 @@ i32.const 0 i32.store loop $for-loop|0 - local.get $1 + local.get $0 i32.const 23 i32.lt_u if - local.get $1 + local.get $0 i32.const 2 i32.shl i32.const 18144 @@ -732,14 +732,14 @@ i32.const 0 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 16 i32.lt_u if - local.get $0 local.get $1 + local.get $0 i32.const 4 i32.shl i32.add @@ -749,17 +749,17 @@ i32.add i32.const 0 i32.store offset=96 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -963,7 +963,6 @@ (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) block $__inlined_func$start:throw global.get $~lib/memory/__stack_pointer i32.const 12 @@ -976,13 +975,12 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 - local.tee $2 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 1056 i32.store local.get $1 diff --git a/tests/compiler/tsconfig.json b/tests/compiler/tsconfig.json index c588333581..50bf8535c3 100644 --- a/tests/compiler/tsconfig.json +++ b/tests/compiler/tsconfig.json @@ -5,5 +5,9 @@ }, "include": [ "./**/*.ts" + ], + "exclude": [ + "./**/*.d.ts", + "./**/_*.ts" ] } diff --git a/tests/compiler/typealias.untouched.wat b/tests/compiler/typealias.debug.wat similarity index 100% rename from tests/compiler/typealias.untouched.wat rename to tests/compiler/typealias.debug.wat diff --git a/tests/compiler/typealias.optimized.wat b/tests/compiler/typealias.release.wat similarity index 100% rename from tests/compiler/typealias.optimized.wat rename to tests/compiler/typealias.release.wat diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.debug.wat similarity index 92% rename from tests/compiler/typeof.untouched.wat rename to tests/compiler/typeof.debug.wat index d3f978daea..ea7dbf8cd3 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.debug.wat @@ -10,11 +10,11 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~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)) @@ -32,7 +32,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/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (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 812)) @@ -41,8 +41,8 @@ (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\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 (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") @@ -2240,237 +2240,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2520,7 +2289,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $~lib/rt/__visit_globals (param $0 i32) @@ -2634,16 +2403,34 @@ i32.const 1 drop i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 32 - i32.eq - drop - i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -2653,19 +2440,19 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 13 + i32.const 64 + i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -2675,19 +2462,19 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 14 + i32.const 64 + i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -2697,8 +2484,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 15 + i32.const 64 + i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable @@ -2719,8 +2506,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 16 + i32.const 64 + i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable @@ -2741,8 +2528,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 17 + i32.const 64 + i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable @@ -2765,19 +2552,19 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 19 + i32.const 64 + i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -2787,8 +2574,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 20 + i32.const 64 + i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable @@ -2811,8 +2598,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 21 + i32.const 64 + i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable @@ -2835,8 +2622,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 22 + i32.const 64 + i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable @@ -2859,8 +2646,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 23 + i32.const 64 + i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable @@ -2883,8 +2670,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 24 + i32.const 64 + i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable @@ -2907,8 +2694,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 27 + i32.const 64 + i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable @@ -2931,8 +2718,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 29 + i32.const 64 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable @@ -2955,8 +2742,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 31 + i32.const 64 + i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable @@ -2979,8 +2766,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 33 + i32.const 64 + i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable @@ -3003,8 +2790,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 35 + i32.const 64 + i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable @@ -3027,8 +2814,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 37 + i32.const 64 + i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable @@ -3051,8 +2838,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 39 + i32.const 64 + i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable @@ -3079,13 +2866,13 @@ global.set $typeof/c global.get $typeof/c drop - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 64 + i32.const 112 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3095,8 +2882,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 41 + i32.const 64 + i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable @@ -3117,8 +2904,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 42 + i32.const 64 + i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable @@ -3139,8 +2926,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 46 + i32.const 64 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable @@ -3163,8 +2950,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 47 + i32.const 64 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable @@ -3187,8 +2974,8 @@ i32.eqz if i32.const 0 - i32.const 96 - i32.const 48 + i32.const 64 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.json b/tests/compiler/typeof.json index 1b3c185bda..d89aa6d3b8 100644 --- a/tests/compiler/typeof.json +++ b/tests/compiler/typeof.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--explicitStart" + "--exportStart", "_start" ] } diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.release.wat similarity index 96% rename from tests/compiler/typeof.optimized.wat rename to tests/compiler/typeof.release.wat index d5176a0ff9..8ae032f2f4 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.release.wat @@ -24,10 +24,10 @@ (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 1068) "\1c") - (data (i32.const 1080) "\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 1100) ",") - (data (i32.const 1112) "\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 1116) "\1c") + (data (i32.const 1128) "\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") (data (i32.const 1148) ",") (data (i32.const 1160) "\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") (data (i32.const 1196) ",") @@ -1204,57 +1204,76 @@ i64.const 0 i64.store local.get $0 - i32.const 1088 + i32.const 1056 i32.store local.get $0 - i32.const 1088 + i32.const 1056 i32.store offset=4 - i32.const 1088 - i32.const 1088 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 13 + i32.const 1088 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.tee $0 - i32.const 1088 + i32.const 1136 i32.store local.get $0 - i32.const 1088 + i32.const 1136 i32.store offset=4 - i32.const 1088 - i32.const 1088 + i32.const 1136 + i32.const 1136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 14 + i32.const 1088 + i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.tee $0 - i32.const 1088 + i32.const 1136 i32.store local.get $0 - i32.const 1088 + i32.const 1136 i32.store offset=4 - i32.const 1088 - i32.const 1088 + i32.const 1136 + i32.const 1136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 15 + i32.const 1088 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1136 + i32.store + local.get $0 + i32.const 1136 + i32.store offset=4 + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable @@ -1272,8 +1291,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 16 + i32.const 1088 + i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable @@ -1291,8 +1310,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 17 + i32.const 1088 + i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable @@ -1310,27 +1329,27 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 19 + i32.const 1088 + i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.tee $0 - i32.const 1088 + i32.const 1136 i32.store local.get $0 - i32.const 1088 + i32.const 1136 i32.store offset=4 - i32.const 1088 - i32.const 1088 + i32.const 1136 + i32.const 1136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 20 + i32.const 1088 + i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable @@ -1348,8 +1367,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 21 + i32.const 1088 + i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable @@ -1367,8 +1386,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 22 + i32.const 1088 + i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable @@ -1386,8 +1405,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 23 + i32.const 1088 + i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable @@ -1405,8 +1424,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 24 + i32.const 1088 + i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable @@ -1424,8 +1443,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 27 + i32.const 1088 + i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable @@ -1443,8 +1462,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 29 + i32.const 1088 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable @@ -1462,8 +1481,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 31 + i32.const 1088 + i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable @@ -1481,8 +1500,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 33 + i32.const 1088 + i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable @@ -1500,8 +1519,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 35 + i32.const 1088 + i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable @@ -1519,8 +1538,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 37 + i32.const 1088 + i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable @@ -1538,8 +1557,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 39 + i32.const 1088 + i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable @@ -1807,11 +1826,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1820,19 +1843,19 @@ local.get $0 global.set $typeof/c global.get $~lib/memory/__stack_pointer - i32.const 1088 + i32.const 1136 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1088 + i32.const 1136 i32.store offset=4 - i32.const 1088 - i32.const 1088 + i32.const 1136 + i32.const 1136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 41 + i32.const 1088 + i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable @@ -1850,8 +1873,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 42 + i32.const 1088 + i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable @@ -1869,8 +1892,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 46 + i32.const 1088 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable @@ -1888,8 +1911,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 47 + i32.const 1088 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable @@ -1907,8 +1930,8 @@ i32.eqz if i32.const 0 - i32.const 1120 - i32.const 48 + i32.const 1088 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.ts b/tests/compiler/typeof.ts index a54c04db72..b29d88663b 100644 --- a/tests/compiler/typeof.ts +++ b/tests/compiler/typeof.ts @@ -1,6 +1,4 @@ -assert(typeof 1 === "number"); // static string === static string precomputes - -// non-precomputed +assert(typeof 1 == "number"); class SomeClass { static someStaticMethod(): void {} diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.debug.wat similarity index 100% rename from tests/compiler/unary.untouched.wat rename to tests/compiler/unary.debug.wat diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.release.wat similarity index 100% rename from tests/compiler/unary.optimized.wat rename to tests/compiler/unary.release.wat diff --git a/tests/compiler/unify-local-flags.untouched.wat b/tests/compiler/unify-local-flags.debug.wat similarity index 100% rename from tests/compiler/unify-local-flags.untouched.wat rename to tests/compiler/unify-local-flags.debug.wat diff --git a/tests/compiler/unify-local-flags.optimized.wat b/tests/compiler/unify-local-flags.release.wat similarity index 100% rename from tests/compiler/unify-local-flags.optimized.wat rename to tests/compiler/unify-local-flags.release.wat diff --git a/tests/compiler/unknown-bool-ident.untouched.wat b/tests/compiler/unknown-bool-ident.untouched.wat deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/compiler/unmanaged-errors.ts b/tests/compiler/unmanaged-errors.ts index 335ff73703..2e73894bb7 100644 --- a/tests/compiler/unmanaged-errors.ts +++ b/tests/compiler/unmanaged-errors.ts @@ -1,11 +1,11 @@ -export class ManagedBase {} -@unmanaged export class UnmanagedFoo extends ManagedBase {} // AS207 +class ManagedBase {} +@unmanaged class UnmanagedFoo extends ManagedBase {} // AS207 // see: https://github.com/AssemblyScript/assemblyscript/issues/2067 -@unmanaged export class UnmanagedBase {} -export class ManagedBaz {} -export class ManagedFoo extends UnmanagedBase { // AS207 +@unmanaged class UnmanagedBase {} +class ManagedBaz {} +class ManagedFoo extends UnmanagedBase { // AS207 constructor(public baz: ManagedBaz) { super(); } } diff --git a/tests/compiler/void.untouched.wat b/tests/compiler/void.debug.wat similarity index 100% rename from tests/compiler/void.untouched.wat rename to tests/compiler/void.debug.wat diff --git a/tests/compiler/void.optimized.wat b/tests/compiler/void.release.wat similarity index 100% rename from tests/compiler/void.optimized.wat rename to tests/compiler/void.release.wat diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.debug.wat similarity index 80% rename from tests/compiler/wasi/abort.untouched.wat rename to tests/compiler/wasi/abort.debug.wat index 4c29f23363..6732ef0bd2 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.debug.wat @@ -1,7 +1,8 @@ (module + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) @@ -11,6 +12,7 @@ (global $~lib/shared/runtime/Runtime.Stub i32 (i32.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 $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 220)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16604)) @@ -24,7 +26,7 @@ (elem $0 (i32.const 1)) (export "test" (func $wasi/abort/test)) (export "memory" (memory $0)) - (export "_start" (func $~start)) + (export "_initialize" (func $~start)) (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -38,6 +40,159 @@ i32.const 1 i32.shr_u ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -391,7 +546,7 @@ local.set $4 local.get $0 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $0 @@ -415,7 +570,7 @@ local.set $4 local.get $1 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $1 diff --git a/tests/compiler/wasi/abort.js b/tests/compiler/wasi/abort.js index 2b08412d0b..234be716b5 100644 --- a/tests/compiler/wasi/abort.js +++ b/tests/compiler/wasi/abort.js @@ -1,7 +1,7 @@ var memory; var failed; -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports["wasi_snapshot_preview1"] = { fd_write: function(fd, iov, iov_len, nptr) { if (fd != 2) failed = "unexpected fd: " + fd; @@ -15,9 +15,9 @@ exports.preInstantiate = function(imports, exports) { } }; if (failed) throw Error(failed); -}; +} -exports.postInstantiate = function(instance) { +export function postInstantiate(instance) { const exports = instance.exports; memory = exports.memory; var thrown = false; @@ -28,4 +28,4 @@ exports.postInstantiate = function(instance) { } if (!thrown) failed = "unexpected missing throw"; if (failed) throw Error(failed); -}; +} diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.release.wat similarity index 99% rename from tests/compiler/wasi/abort.optimized.wat rename to tests/compiler/wasi/abort.release.wat index b78322598c..b458fbbb1d 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.release.wat @@ -17,7 +17,7 @@ (data (i32.const 1208) "\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") (export "test" (func $wasi/abort/test)) (export "memory" (memory $0)) - (export "_start" (func $~start)) + (export "_initialize" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.debug.wat similarity index 99% rename from tests/compiler/wasi/seed.untouched.wat rename to tests/compiler/wasi/seed.debug.wat index 7d0a0aaab9..df6a5479cc 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.debug.wat @@ -21,7 +21,7 @@ (elem $0 (i32.const 1)) (export "test" (func $wasi/seed/test)) (export "memory" (memory $0)) - (export "_start" (func $~start)) + (export "_initialize" (func $~start)) (func $~lib/wasi/index/seed (result f64) (local $0 i64) loop $do-loop|0 diff --git a/tests/compiler/wasi/seed.js b/tests/compiler/wasi/seed.js index 710ac9af40..9a4560191d 100644 --- a/tests/compiler/wasi/seed.js +++ b/tests/compiler/wasi/seed.js @@ -1,7 +1,9 @@ +import crypto from "crypto"; + var memory; var failed; -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports["wasi_snapshot_preview1"] = { fd_write: function(fd, iov, iov_len, nptr) { if (fd != 2) failed = "unexpected fd: " + fd; @@ -14,14 +16,14 @@ exports.preInstantiate = function(imports, exports) { console.log("exit: " + code); }, random_get: function(buf, len) { - new Uint8Array(memory.buffer, buf, len).set(require("crypto").randomBytes(len)); + new Uint8Array(memory.buffer, buf, len).set(crypto.randomBytes(len)); } }; -}; +} -exports.postInstantiate = function(instance) { +export function postInstantiate(instance) { const exports = instance.exports; memory = exports.memory; console.log("Math.random = " + exports.test()); if (failed) throw Error(failed); -}; +} diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.release.wat similarity index 98% rename from tests/compiler/wasi/seed.optimized.wat rename to tests/compiler/wasi/seed.release.wat index 07eb13b218..a611729c9b 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.release.wat @@ -9,7 +9,7 @@ (memory $0 1) (export "test" (func $wasi/seed/test)) (export "memory" (memory $0)) - (export "_start" (func $~start)) + (export "_initialize" (func $~start)) (func $wasi/seed/test (result f64) (local $0 i64) (local $1 i64) diff --git a/tests/compiler/wasi/snapshot_preview1.untouched.wat b/tests/compiler/wasi/snapshot_preview1.debug.wat similarity index 98% rename from tests/compiler/wasi/snapshot_preview1.untouched.wat rename to tests/compiler/wasi/snapshot_preview1.debug.wat index c954b2c789..80c91b9344 100644 --- a/tests/compiler/wasi/snapshot_preview1.untouched.wat +++ b/tests/compiler/wasi/snapshot_preview1.debug.wat @@ -3,7 +3,7 @@ (global $~lib/shared/target/Target.JS i32 (i32.const 0)) (global $~lib/shared/target/Target.WASM32 i32 (i32.const 1)) (global $~lib/shared/target/Target.WASM64 i32 (i32.const 2)) - (global $~lib/ASC_TARGET i32 (i32.const 1)) + (global $~lib/native/ASC_TARGET i32 (i32.const 1)) (global $wasi/snapshot_preview1/sig (mut i32) (i32.const 1)) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) diff --git a/tests/compiler/wasi/snapshot_preview1.optimized.wat b/tests/compiler/wasi/snapshot_preview1.release.wat similarity index 100% rename from tests/compiler/wasi/snapshot_preview1.optimized.wat rename to tests/compiler/wasi/snapshot_preview1.release.wat diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.debug.wat similarity index 78% rename from tests/compiler/wasi/trace.untouched.wat rename to tests/compiler/wasi/trace.debug.wat index d18210b2a4..42317e57fc 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.debug.wat @@ -1,12 +1,12 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -18,7 +18,8 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~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/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -26,7 +27,6 @@ (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 1616)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18000)) (global $~lib/memory/__heap_base i32 (i32.const 18000)) @@ -167,6 +167,159 @@ i32.const 1 i32.shr_u ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + 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 $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -520,7 +673,7 @@ local.set $4 local.get $0 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $0 @@ -544,7 +697,7 @@ local.set $4 local.get $1 i32.const 0 - i32.ne + call $~lib/string/String.__ne if local.get $4 local.get $1 @@ -2515,1259 +2668,6 @@ end unreachable ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -4017,7 +2917,7 @@ i32.sub i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 local.get $3 i32.const 1 @@ -4054,7 +2954,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 48 i32.const 46 @@ -4161,7 +3061,7 @@ local.get $7 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 @@ -4375,7 +3275,7 @@ f64.add local.set $16 local.get $16 - i32.trunc_f64_s + i32.trunc_sat_f64_s local.set $15 local.get $15 local.get $15 diff --git a/tests/compiler/wasi/trace.js b/tests/compiler/wasi/trace.js index 9a3d00de50..11fac68f06 100644 --- a/tests/compiler/wasi/trace.js +++ b/tests/compiler/wasi/trace.js @@ -1,7 +1,7 @@ var memory; var failed; -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports["wasi_snapshot_preview1"] = { fd_write: function(fd, iov, iov_len, nptr) { if (fd != 2) failed = "unexpected fd: " + fd; @@ -14,10 +14,10 @@ exports.preInstantiate = function(imports, exports) { console.log("exit: " + code); } }; -}; +} -exports.postInstantiate = function(instance) { +export function postInstantiate(instance) { const exports = instance.exports; memory = exports.memory; if (failed) throw Error(failed); -}; +} diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.release.wat similarity index 77% rename from tests/compiler/wasi/trace.optimized.wat rename to tests/compiler/wasi/trace.release.wat index ca32daa0b6..a5111bb2e2 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.release.wat @@ -1,7 +1,7 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -233,6 +233,13 @@ i64.store local.get $0 if (result i32) + i32.const 0 + else + i32.const 1 + end + if (result i32) + i32.const 19 + else local.get $0 i32.const 20 i32.sub @@ -248,8 +255,6 @@ call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 19 i32.add - else - i32.const 19 end local.tee $0 i32.const 544106784 @@ -259,6 +264,12 @@ i32.add local.set $0 local.get $1 + if (result i32) + i32.const 0 + else + i32.const 1 + end + i32.eqz if local.get $1 i32.const 20 @@ -1590,1066 +1601,194 @@ local.get $5 end ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $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) loop $while-continue|0 local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select + i32.const 10000 + i32.ge_u if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 local.get $1 - local.tee $4 - i32.const 1 - i32.add + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 local.get $2 - i32.const 1 + i32.const 4 i32.sub - local.set $2 + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2240 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2240 + 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 3 - i32.and + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2240 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2240 + i32.add + i32.load + i32.store + else + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 i32.eqz if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 local.get $1 - i32.load offset=8 - i32.store offset=8 + i32.const 1 + i32.shl local.get $0 + i32.add + i32.const 48 + i32.store16 local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 + i32.const 1 i32.add local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 + br $for-loop|0 end end - local.get $2 - i32.const 8 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 + if (result i32) + local.get $3 + i32.const 1 + i32.shl local.get $0 - i32.const 8 i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 + local.tee $0 + i32.const 2 i32.add - local.set $1 local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=5 - local.tee $4 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - local.get $4 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=6 - local.tee $4 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - local.get $4 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $1 - i32.load offset=7 - local.tee $4 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - local.get $4 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - local.get $1 - i32.const 2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $0 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2240 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2240 - 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 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2240 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2240 - i32.add - i32.load - i32.store - else - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 + i32.const 46 i32.store16 local.get $1 i32.const 1 @@ -2675,7 +1814,7 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 3014704 i32.store @@ -2707,68 +1846,69 @@ local.get $1 i32.const 1 i32.eq - if (result i32) + if local.get $0 i32.const 101 i32.store16 offset=2 local.get $0 i32.const 4 i32.add + local.tee $2 local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -2778,13 +1918,12 @@ i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $2 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select - i32.store16 offset=4 - local.get $1 + i32.store16 else local.get $0 i32.const 4 @@ -2798,26 +1937,27 @@ local.tee $2 i32.const 2 i32.sub - call $~lib/memory/memory.copy + memory.copy local.get $0 i32.const 46 i32.store16 offset=2 local.get $0 local.get $2 i32.add - local.tee $2 + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $2 + local.get $0 i32.const 4 i32.add + local.tee $4 local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $2 if i32.const 0 local.get $0 @@ -2875,16 +2015,18 @@ i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $4 i32.const 45 i32.const 43 - local.get $3 + local.get $2 select - i32.store16 offset=4 + i32.store16 local.get $0 local.get $1 i32.add + local.set $1 end + local.get $1 i32.const 2 i32.add end @@ -2897,16 +2039,15 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i64) + (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) (local $15 i64) - (local $16 i64) local.get $1 f64.const 0 f64.lt @@ -2927,19 +2068,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $8 + local.tee $7 i32.const 1 - local.get $8 + local.get $7 select i32.const 1075 i32.sub - local.tee $9 + local.tee $8 i32.const 1 i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $8 + local.get $7 i32.const 0 i32.ne i64.extend_i32_u @@ -2954,11 +2095,11 @@ local.tee $4 i64.clz i32.wrap_i64 - local.tee $8 + local.tee $7 i32.sub - local.set $10 + local.set $9 local.get $4 - local.get $8 + local.get $7 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -2968,25 +2109,25 @@ i64.eq i32.const 1 i32.add - local.tee $8 + local.tee $7 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 local.get $8 + local.get $7 i32.sub - local.get $10 + local.get $9 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $10 + local.get $9 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 + local.tee $7 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -2994,10 +2135,10 @@ f64.const 347 f64.add local.tee $1 - i32.trunc_f64_s - local.tee $9 + i32.trunc_sat_f64_s + local.tee $8 local.get $1 - local.get $9 + local.get $8 f64.convert_i32_s f64.ne i32.add @@ -3005,18 +2146,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $9 + local.tee $8 i32.const 3 i32.shl - local.tee $10 + local.tee $9 i32.sub global.set $~lib/util/number/_K - local.get $10 + local.get $9 i32.const 1328 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $9 + local.get $8 i32.const 1 i32.shl i32.const 2024 @@ -3030,38 +2171,37 @@ local.tee $2 i64.const 4294967295 i64.and - local.set $11 + local.set $5 local.get $2 i64.const 32 i64.shr_u - local.tee $5 + local.tee $4 global.get $~lib/util/number/_frc_pow - local.tee $7 + local.tee $10 i64.const 4294967295 i64.and - local.tee $12 - local.tee $2 + local.tee $11 i64.mul - local.get $2 + local.get $5 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $13 + local.set $12 global.get $~lib/util/number/_frc_plus - local.tee $4 + local.tee $2 i64.const 4294967295 i64.and - local.set $2 - local.get $4 + local.set $13 + local.get $2 i64.const 32 i64.shr_u local.tee $6 - local.get $12 + local.get $11 i64.mul - local.get $2 - local.get $12 + local.get $11 + local.get $13 i64.mul i64.const 32 i64.shr_u @@ -3071,41 +2211,34 @@ local.tee $15 i64.const 4294967295 i64.and - local.set $4 + local.set $2 local.get $15 i64.const 32 i64.shr_u local.tee $15 - local.get $12 + local.get $11 i64.mul - local.get $4 - local.get $12 + local.get $2 + local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $5 - local.get $7 + local.set $11 + local.get $6 + local.get $10 i64.const 32 i64.shr_u - local.tee $16 - local.tee $7 + local.tee $10 i64.mul - local.get $13 + local.get $14 i64.const 32 i64.shr_u i64.add - local.get $7 - local.get $11 - i64.mul + local.get $10 local.get $13 + i64.mul + local.get $14 i64.const 4294967295 i64.and i64.add @@ -3114,17 +2247,26 @@ i64.const 32 i64.shr_u i64.add - local.get $6 - local.get $16 + i64.const 1 + i64.sub + local.set $6 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $4 + local.get $10 i64.mul - local.get $14 + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $16 + local.get $5 + local.get $10 i64.mul - local.get $14 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -3133,26 +2275,24 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + local.get $6 global.get $~lib/util/number/_exp_pow - local.get $8 + local.get $7 i32.add i32.const -64 i32.sub - local.get $2 + local.get $6 + local.get $10 local.get $15 - local.get $16 i64.mul - local.get $12 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $4 - local.get $16 + local.get $2 + local.get $10 i64.mul - local.get $12 + local.get $11 i64.const 4294967295 i64.and i64.add diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.debug.wat similarity index 93% rename from tests/compiler/while.untouched.wat rename to tests/compiler/while.debug.wat index b5b316251b..5ca11a0b26 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.debug.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -23,8 +23,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/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 500)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884)) @@ -2518,237 +2517,6 @@ local.get $1 i32.store offset=16 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $6 - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - i32.const 4 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - i32.const 12 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 8 - i32.sub - local.get $8 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - i32.const 28 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 24 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 20 - i32.sub - local.get $8 - i32.store - local.get $6 - i32.const 16 - i32.sub - local.get $8 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2798,7 +2566,7 @@ local.get $3 i32.const 0 local.get $0 - call $~lib/memory/memory.fill + memory.fill local.get $3 ) (func $while/testRef diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.release.wat similarity index 99% rename from tests/compiler/while.optimized.wat rename to tests/compiler/while.release.wat index 34acde17ff..9016485d0b 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.release.wat @@ -1785,11 +1785,15 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 local.get $0 i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/decompiler.js b/tests/decompiler.js deleted file mode 100644 index 3d22d199d0..0000000000 --- a/tests/decompiler.js +++ /dev/null @@ -1,29 +0,0 @@ -var binaryen = global.binaryen = require("../lib/binaryen"); - -require("ts-node").register({ - project: require("path").join(__dirname, "..", "src", "tsconfig.json"), - compilerHost: true, - files: true -}); -require("../src/glue/js"); - -var mod = new binaryen.Module(); -var ftype = mod.addFunctionType("i", binaryen.i32, [ ]); -var fn = mod.addFunction("main", ftype, [], - mod.block(null, [ - mod.return( - mod.i32.add( - mod.i32.const(1), - mod.i32.const(2) - ) - ) - ]) -); - -mod.validate(); -mod.emitText(); - -var Decompiler = require("../src/decompiler").Decompiler; -var decompiler = new Decompiler(); -decompiler.decompileFunction(fn); -console.log(decompiler.finish()); diff --git a/tests/extension/assembly/index.as b/tests/extension/assembly/index.as deleted file mode 100644 index 923334a12e..0000000000 --- a/tests/extension/assembly/index.as +++ /dev/null @@ -1,2 +0,0 @@ -import { add } from "./other"; -add(1, 2); diff --git a/tests/extension/assembly/other.as b/tests/extension/assembly/other.as deleted file mode 100644 index caed355404..0000000000 --- a/tests/extension/assembly/other.as +++ /dev/null @@ -1,3 +0,0 @@ -export function add(a: i32, b: i32): i32 { - return a + b; -} diff --git a/tests/extension/package.json b/tests/extension/package.json deleted file mode 100644 index 0bfdd721eb..0000000000 --- a/tests/extension/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "scripts": { - "test": "npm run asbuild", - "asbuild": "node ../../bin/asc assembly/index.as --extension .as --noEmit" - } -} diff --git a/tests/features.json b/tests/features.json index 07322b22df..1ac3d7867a 100644 --- a/tests/features.json +++ b/tests/features.json @@ -1,21 +1,4 @@ { - "mutable-globals": { - }, - "bigint-integration": { - }, - "nontrapping-f2i": { - "asc_flags": [ - "--enable nontrapping-f2i" - ] - }, - "simd": { - "asc_flags": [ - "--enable simd" - ], - "v8_flags": [ - "--experimental-wasm-simd" - ] - }, "threads": { "asc_flags": [ "--enable threads" diff --git a/tests/import/index.ts b/tests/import/index.ts new file mode 100644 index 0000000000..7d18cd4279 --- /dev/null +++ b/tests/import/index.ts @@ -0,0 +1,3 @@ +import * as as from "../../dist/assemblyscript"; +var program: as.Program = as.newProgram(as.newOptions()); +as.parse(program, "", "empty"); diff --git a/tests/packages/.gitignore b/tests/packages/.gitignore deleted file mode 100644 index be98dd7167..0000000000 --- a/tests/packages/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -packages/*/package-lock.json -package-lock.json -!node_modules/ -!packages/**/*/node_modules/ \ No newline at end of file diff --git a/tests/packages/package.json b/tests/packages/package.json deleted file mode 100644 index 0ae45ee9c8..0000000000 --- a/tests/packages/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "scripts": { - "test": "npm run a && npm run b && npm run c && npm run d && npm run e && npm run f && npm run g && npm run as && npm run h", - "a": "cd ./packages/a && node ../../../../bin/asc assembly/index.ts --noEmit", - "as": "cd ./packages/as && node ../../../../bin/asc as/index.ts --noEmit", - "b": "cd ./packages/b && node ../../../../bin/asc assembly/index.ts --noEmit && node ../../../../bin/asc assembly/index.ts --noEmit --listFiles", - "c": "cd ./packages/c && node ../../../../bin/asc assembly/index.ts --noEmit", - "d": "cd ./packages/d && node ../../../../bin/asc assembly/index.ts --path packages --noEmit --traceResolution", - "e": "cd ./packages/d/packages/e && node ../../../../../../bin/asc assembly/index.ts --noEmit", - "f": "cd ./packages/d/packages/e/packages/f && node ../../../../../../../../bin/asc assembly/index.ts --noEmit", - "g": "cd ./packages/g && node test.js", - "h": "cd ./packages/h && node ../../../../bin/asc assembly/index.ts --noEmit --traceResolution" - }, - "author": "Willem Wyndham", - "license": "Apache-2.0" -} diff --git a/tests/packages/packages/a/assembly/a.ts b/tests/packages/packages/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/a/assembly/index.ts b/tests/packages/packages/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/as/as/as.ts b/tests/packages/packages/as/as/as.ts deleted file mode 100644 index 3a3f725f66..0000000000 --- a/tests/packages/packages/as/as/as.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function AS(str: string): string { - return str + "S"; -} diff --git a/tests/packages/packages/as/as/index.ts b/tests/packages/packages/as/as/index.ts deleted file mode 100644 index 74dad6ad7a..0000000000 --- a/tests/packages/packages/as/as/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./as"; diff --git a/tests/packages/packages/as/package.json b/tests/packages/packages/as/package.json deleted file mode 100644 index 1d7d981fe4..0000000000 --- a/tests/packages/packages/as/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "ascMain": "as/index.ts" -} diff --git a/tests/packages/packages/b/assembly/b.ts b/tests/packages/packages/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/b/assembly/index.ts b/tests/packages/packages/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/b/node_modules/a/assembly/a.ts b/tests/packages/packages/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/b/node_modules/a/assembly/index.ts b/tests/packages/packages/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/c/assembly/c.ts b/tests/packages/packages/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/c/assembly/index.ts b/tests/packages/packages/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/c/node_modules/b/assembly/b.ts b/tests/packages/packages/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/c/node_modules/b/assembly/index.ts b/tests/packages/packages/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/d/assembly/d.ts b/tests/packages/packages/d/assembly/d.ts deleted file mode 100644 index 34974286d8..0000000000 --- a/tests/packages/packages/d/assembly/d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { C, BC, ABC } from "c"; -import { E } from "e"; -import { AS } from "as"; - -export function D(): string { - return "D"; -} - -export function CD(): string { - return C() + D(); -} - -export function BCD(): string { - return BC() + D(); -} - -export function ABCD(): string { - return ABC() + D(); -} - -export function ABCDE(): string { - return ABCD() + E(); -} - -export function ABCDS(): string { - return AS(ABCD()); -} diff --git a/tests/packages/packages/d/assembly/index.ts b/tests/packages/packages/d/assembly/index.ts deleted file mode 100644 index bc24287205..0000000000 --- a/tests/packages/packages/d/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./d"; diff --git a/tests/packages/packages/d/node_modules/as/notassembly/as.ts b/tests/packages/packages/d/node_modules/as/notassembly/as.ts deleted file mode 100644 index 3a3f725f66..0000000000 --- a/tests/packages/packages/d/node_modules/as/notassembly/as.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function AS(str: string): string { - return str + "S"; -} diff --git a/tests/packages/packages/d/node_modules/as/notassembly/index.ts b/tests/packages/packages/d/node_modules/as/notassembly/index.ts deleted file mode 100644 index 74dad6ad7a..0000000000 --- a/tests/packages/packages/d/node_modules/as/notassembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./as"; diff --git a/tests/packages/packages/d/node_modules/as/package.json b/tests/packages/packages/d/node_modules/as/package.json deleted file mode 100644 index 614a251f86..0000000000 --- a/tests/packages/packages/d/node_modules/as/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "ascMain": "./notassembly/index.ts" -} diff --git a/tests/packages/packages/d/node_modules/c/assembly/c.ts b/tests/packages/packages/d/node_modules/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/d/node_modules/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/d/node_modules/c/assembly/index.ts b/tests/packages/packages/d/node_modules/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/d/node_modules/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/d/packages/e/assembly/e.ts b/tests/packages/packages/d/packages/e/assembly/e.ts deleted file mode 100644 index 5b9ffc04f8..0000000000 --- a/tests/packages/packages/d/packages/e/assembly/e.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { C } from "c"; - -export function E(): string { - return "E"; -} - -export function EC(): string { - return C() + E(); -} diff --git a/tests/packages/packages/d/packages/e/assembly/index.ts b/tests/packages/packages/d/packages/e/assembly/index.ts deleted file mode 100644 index 1b294003b9..0000000000 --- a/tests/packages/packages/d/packages/e/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./e"; diff --git a/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts b/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts deleted file mode 100644 index b727d02584..0000000000 --- a/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function F(): string { - return "F"; -} diff --git a/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts b/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts deleted file mode 100644 index ec8b811dc9..0000000000 --- a/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./f"; diff --git a/tests/packages/packages/g/assembly/g.ts b/tests/packages/packages/g/assembly/g.ts deleted file mode 100644 index 7e67700d37..0000000000 --- a/tests/packages/packages/g/assembly/g.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ABC } from "c"; -import { A } from "a"; - -export function AAG(): string { - return A() + A() + "G"; -} - -export function ABCG(): string { - return ABC() + "G"; -} diff --git a/tests/packages/packages/g/assembly/index.ts b/tests/packages/packages/g/assembly/index.ts deleted file mode 100644 index 434c8fb2be..0000000000 --- a/tests/packages/packages/g/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./g"; diff --git a/tests/packages/packages/g/node_modules/c/assembly/c.ts b/tests/packages/packages/g/node_modules/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/g/node_modules/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/g/node_modules/c/assembly/index.ts b/tests/packages/packages/g/node_modules/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/g/node_modules/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/g/test.js b/tests/packages/packages/g/test.js deleted file mode 100644 index 01eb5232ae..0000000000 --- a/tests/packages/packages/g/test.js +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node -const asc = require("../../../../cli/asc"); - -const stderr = asc.createMemoryStream(); -asc.main([ - "assembly/index.ts", - "--noEmit", - "--traceResolution" -], { stderr }, err => { - if (stderr.toString().includes("File '~lib/a.ts' not found.")) { - process.exit(0); - } - console.error("Failed!\n" + err); - process.exit(1); -}); diff --git a/tests/packages/packages/h/assembly/index.ts b/tests/packages/packages/h/assembly/index.ts deleted file mode 100644 index 20091e99f3..0000000000 --- a/tests/packages/packages/h/assembly/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { h } from "@foo/bar"; - -export function getH(): i32 { - return h; -} diff --git a/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts b/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts deleted file mode 100644 index 5cf0d3fbdf..0000000000 --- a/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { h2 } from "@bar/baz"; - -export const h = h2; diff --git a/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts b/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts deleted file mode 100644 index 0d49ca8468..0000000000 --- a/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const h2 = 3; diff --git a/tests/packages/tsconfig.json b/tests/packages/tsconfig.json deleted file mode 100644 index 21cef40f1d..0000000000 --- a/tests/packages/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../std/assembly.json", - "include": ["**/*/assembly/**/*.ts"] -} diff --git a/tests/parser.js b/tests/parser.js index b02bc7556a..1665fa06c1 100644 --- a/tests/parser.js +++ b/tests/parser.js @@ -1,10 +1,14 @@ -const fs = require("fs"); -const path = require("path"); -const os = require("os"); -const glob = require("glob"); -const colorsUtil = require("../cli/util/colors"); -const optionsUtil = require("../cli/util/options"); -const diff = require("./util/diff"); +import fs from "fs"; +import path from "path"; +import os from "os"; +import { fileURLToPath } from "url"; +import glob from "glob"; +import { diff } from "../util/text.js"; +import { stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; +import { Program, Options, ASTBuilder } from "../dist/assemblyscript.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); const config = { "create": { @@ -26,16 +30,16 @@ const argv = opts.arguments; if (args.help) { console.log([ - colorsUtil.white("SYNTAX"), - " " + colorsUtil.cyan("npm run test:parser --") + " [test1, test2 ...] [options]", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("npm run test:parser --") + " [test1, test2 ...] [options]", "", - colorsUtil.white("OPTIONS"), + stdoutColors.white("OPTIONS"), optionsUtil.help(config) ].join(os.EOL) + os.EOL); process.exit(0); } -const basedir = path.join(__dirname, "parser"); +const basedir = path.join(dirname, "parser"); // Get a list of all tests var tests = glob.sync("**/!(_*).ts", { cwd: basedir }); @@ -49,54 +53,44 @@ if (argv.length) { } } -require("ts-node").register({ - project: path.join(__dirname, "..", "src", "tsconfig.json"), - compilerHost: true, - files: true -}); -require("../src/glue/js"); - -const { Program, Options } = require("../src"); -const ASTBuilder = require("../src/extra/ast").ASTBuilder; - var failures = 0; -tests.forEach(filename => { - if (filename.charAt(0) == "_" || filename.endsWith(".fixture.ts")) return; +for (const filename of tests) { + if (filename.charAt(0) == "_" || filename.endsWith(".fixture.ts")) continue; - console.log(colorsUtil.white("Testing parser/" + filename)); + console.log(stdoutColors.white("Testing parser/" + filename)); - var failed = false; - var program = new Program(new Options()); - var parser = program.parser; - var sourceText = fs.readFileSync(basedir + "/" + filename, { encoding: "utf8" }).replace(/\r?\n/g, "\n"); + let failed = false; + const program = new Program(new Options()); + const parser = program.parser; + const sourceText = fs.readFileSync(basedir + "/" + filename, { encoding: "utf8" }).replace(/\r?\n/g, "\n"); parser.parseFile(sourceText, filename, true); - var serializedSourceText = ASTBuilder.build(program.sources[0]); - var actual = serializedSourceText + parser.diagnostics.map(diagnostic => "// " + diagnostic +"\n").join(""); - var fixture = filename + ".fixture.ts"; + const serializedSourceText = ASTBuilder.build(program.sources[0]); + const actual = serializedSourceText + parser.diagnostics.map(diagnostic => "// " + diagnostic +"\n").join(""); + const fixture = filename + ".fixture.ts"; if (args.create) { fs.writeFileSync(basedir + "/" + fixture, actual, { encoding: "utf8" }); console.log("Created\n"); } else { - var expected = fs.readFileSync(basedir + "/" + fixture, { encoding: "utf8" }).replace(/\r\n/g, "\n"); - var diffs = diff("parser/" + fixture, expected, actual); + const expected = fs.readFileSync(basedir + "/" + fixture, { encoding: "utf8" }).replace(/\r\n/g, "\n"); + const diffs = diff("parser/" + fixture, expected, actual); if (diffs !== null) { failed = true; console.log(diffs); - console.log(colorsUtil.red("diff ERROR")); + console.log(stdoutColors.red("diff ERROR")); } else { - console.log(colorsUtil.green("diff OK")); + console.log(stdoutColors.green("diff OK")); } } console.log(); - if (failed) - ++failures; -}); + if (failed) ++failures; +} if (failures) { process.exitCode = 1; - console.log(colorsUtil.red("ERROR: ") + failures + " parser tests failed"); -} else - console.log("[ " + colorsUtil.white("SUCCESS") + " ]"); + console.log(stdoutColors.red("ERROR: ") + failures + " parser tests failed"); +} else { + console.log("[ " + stdoutColors.white("SUCCESS") + " ]"); +} diff --git a/tests/parser/module.ts b/tests/parser/module.ts new file mode 100644 index 0000000000..c22817d3ea --- /dev/null +++ b/tests/parser/module.ts @@ -0,0 +1,2 @@ +module "abc"; +declare module "abc"; diff --git a/tests/parser/module.ts.fixture.ts b/tests/parser/module.ts.fixture.ts new file mode 100644 index 0000000000..c22817d3ea --- /dev/null +++ b/tests/parser/module.ts.fixture.ts @@ -0,0 +1,2 @@ +module "abc"; +declare module "abc"; diff --git a/tests/require/index-release.ts b/tests/require/index-release.ts deleted file mode 100644 index e535d1c99f..0000000000 --- a/tests/require/index-release.ts +++ /dev/null @@ -1,6 +0,0 @@ -// used to check `require`ing distribution files -// - dist/assemblyscript.js -// - dist/assemblyscript.d.ts -import * as as from "../../index.release"; -var program: as.Program = as.newProgram(as.newOptions()); -as.parse(program, "", "empty"); diff --git a/tests/require/index.ts b/tests/require/index.ts deleted file mode 100644 index 2fdcb82c5e..0000000000 --- a/tests/require/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -// used to check `require`ing portable sources -// - src/glue/js/index.ts -// - src/index.ts -import * as as from "../../index"; -var program: as.Program = as.newProgram(as.newOptions()); -as.parse(program, "", "empty"); diff --git a/tests/tokenizer.js b/tests/tokenizer.js index d4c43f4b4a..82c5ab4312 100644 --- a/tests/tokenizer.js +++ b/tests/tokenizer.js @@ -1,26 +1,19 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import { Tokenizer, Token, Source, SourceKind } from "../dist/assemblyscript.js"; -require("ts-node").register({ - project: path.join(__dirname, "..", "src", "tsconfig.json"), - typeCheck: false, - transpileOnly: true, - compilerHost: true, - files: true, -}); -require("../src/glue/js"); +const dirname = path.dirname(fileURLToPath(import.meta.url)); -const { Tokenizer, Token } = require("../src/tokenizer"); -const { Source, SourceKind } = require("../src/ast"); - -var file = process.argv.length > 2 ? process.argv[2] : path.join(__dirname, "..", "src", "tokenizer.ts"); +const file = process.argv.length > 2 ? process.argv[2] : path.join(dirname, "..", "src", "tokenizer.ts"); const text = fs.readFileSync(file).toString(); -const tn = new Tokenizer(new Source("compiler.ts", text, SourceKind.ENTRY)); +const source = new Source(SourceKind.ENTRY, "compiler.ts", text); +const tn = new Tokenizer(source); do { - let token = tn.next(); - let range = tn.range(); - process.stdout.write(Token[token] + " @ " + range.line + ":" + range.column); + const token = tn.next(); + const range = tn.range(); + process.stdout.write(Token[token] + " @ " + source.lineAt(range.start) + ":" + source.columnAt()); if (token == Token.IDENTIFIER) { process.stdout.write(" > " + tn.readIdentifier()); } else if (token == Token.INTEGERLITERAL) { diff --git a/tests/transform/cjs/index.js b/tests/transform/cjs/index.js new file mode 100644 index 0000000000..1df40f5de4 --- /dev/null +++ b/tests/transform/cjs/index.js @@ -0,0 +1,21 @@ +const Transform = require("../../../dist/transform.cjs"); + +console.log("CommonJS transform loaded"); + +class MyTransform extends Transform { + constructor() { + super(); + this.log("- constructor"); + } + afterParse () { + this.log("- afterParse"); + } + afterInitialize() { + this.log("- afterInitialize"); + } + afterCompile() { + this.log("- afterCompile"); + } +} + +module.exports = MyTransform; diff --git a/tests/transform/cjs/package.json b/tests/transform/cjs/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/tests/transform/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/tests/transform/cjs/simple.js b/tests/transform/cjs/simple.js new file mode 100644 index 0000000000..79ede6ad6c --- /dev/null +++ b/tests/transform/cjs/simple.js @@ -0,0 +1,18 @@ +const assert = require("assert"); + +console.log("Simple CommonJS transform loaded"); + +exports.afterParse = (parser) => { + assert(typeof parser === "object" && parser !== null); + console.log("- afterParse"); +}; + +exports.afterInitialize = (program) => { + assert(typeof program === "object" && program !== null); + console.log("- afterInitialize"); +}; + +exports.afterCompile = (module) => { + assert(typeof module === "object" && module !== null); + console.log("- afterCompile"); +}; diff --git a/tests/transform/index.js b/tests/transform/index.js new file mode 100644 index 0000000000..fca2bd7fa3 --- /dev/null +++ b/tests/transform/index.js @@ -0,0 +1,63 @@ +import assert from "assert"; +import { Transform } from "../../dist/transform.js"; + +var constructorCalled = false; +var afterParseCalled = false; +var afterInitializeCalled = false; +var afterCompileCalled = false; + +console.log("Transform loaded"); + +export default class MyTransform extends Transform { + constructor() { + assert(!constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + constructorCalled = true; + super(); + check(this); + this.log("- constructor"); + assert(constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + } + async afterParse() { + check(this); + assert(constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + afterParseCalled = true; + this.log("- afterParse"); + await defer(); + await defer(); + await defer(); + this.log(" complete"); + assert(constructorCalled && afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + } + afterInitialize() { + check(this); + assert(constructorCalled && afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + afterInitializeCalled = true; + this.log("- afterInitialize"); + assert(constructorCalled && afterParseCalled && afterInitializeCalled && !afterCompileCalled); + return defer(); + } + afterCompile() { + check(this); + assert(constructorCalled && afterParseCalled && afterInitializeCalled && !afterCompileCalled); + afterCompileCalled = true; + this.log("- afterCompile"); + } +} + +function check(transform) { + assert(typeof transform.program === "object" && transform.program !== null); + assert(typeof transform.baseDir === "string"); + assert(typeof transform.stdout === "object" && transform.stdout !== null); + assert(typeof transform.stderr === "object" && transform.stderr !== null); + assert(typeof transform.log === "function"); + assert(typeof transform.readFile === "function"); + assert(typeof transform.writeFile === "function"); + assert(typeof transform.listFiles === "function"); +} + +function defer() { + return new Promise((resolve, reject) => { + console.log(" defer"); + setTimeout(() => { console.log(" resolve"); resolve(); }, 100); + }); +} diff --git a/tests/transform/simple.js b/tests/transform/simple.js new file mode 100644 index 0000000000..352212fd78 --- /dev/null +++ b/tests/transform/simple.js @@ -0,0 +1,18 @@ +import assert from "assert"; + +console.log("Simple transform loaded"); + +export function afterParse(parser) { + assert(typeof parser === "object" && parser !== null); + console.log("- afterParse"); +} + +export function afterInitialize(program) { + assert(typeof program === "object" && program !== null); + console.log("- afterInitialize"); +} + +export function afterCompile(module) { + assert(typeof module === "object" && module !== null); + console.log("- afterCompile"); +} diff --git a/tests/util-path.js b/tests/util-path.js deleted file mode 100644 index e3d5e9319f..0000000000 --- a/tests/util-path.js +++ /dev/null @@ -1,18 +0,0 @@ -const path = require("path"); -const assert = require("assert"); - -require("ts-node").register({ - project: path.join(__dirname, "..", "src", "tsconfig.json"), - typeCheck: false, - transpileOnly: true, - compilerHost: true, - files: true -}); -require("../src/glue/js"); - -const { normalize, resolve } = require("../src/util/path"); - -var test = "./Y/./N/./N/../../././../Y/./."; -assert.strictEqual(normalize(test), path.posix.normalize(test)); - -assert.strictEqual(resolve("../../..", "lib/util/i64.ts"), ".."); diff --git a/tests/util/diff.js b/tests/util/diff.js deleted file mode 100644 index 4d2a94d9df..0000000000 --- a/tests/util/diff.js +++ /dev/null @@ -1,30 +0,0 @@ -var Diff = require("diff"); -var colors = require("../../cli/util/colors"); - -module.exports = function diff(filename, expected, actual) { - var diff = Diff.structuredPatch(filename, filename, expected, actual, "expected", "actual", { context: 5 }); - if (!diff.hunks.length) - return null; - - var ret = []; - ret.push('--- ' + diff.oldHeader); - ret.push('+++ ' + diff.newHeader); - - for (var i = 0; i < diff.hunks.length; i++) { - var hunk = diff.hunks[i]; - ret.push( - '@@ -' + hunk.oldStart + ',' + hunk.oldLines - + ' +' + hunk.newStart + ',' + hunk.newLines - + ' @@' - ); - ret.push.apply(ret, hunk.lines.map(line => - line.charAt(0) === "+" - ? colors.green(line) - : line.charAt(0) === "-" - ? line = colors.red(line) - : line - )); - } - - return ret.join('\n') + '\n'; -}; diff --git a/tsconfig-docs.json b/tsconfig-docs.json deleted file mode 100644 index 90405cb1ef..0000000000 --- a/tsconfig-docs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./src/tsconfig.json", - "include": [ - "./src/**/*.ts" - ], - "exclude": [ - "./std/**" - ] -} diff --git a/util/README.md b/util/README.md new file mode 100644 index 0000000000..bcc9d83cf2 --- /dev/null +++ b/util/README.md @@ -0,0 +1,23 @@ +Utility +======= + +Various utility functions shared accross the codebase. + +| Utility | Description +|----------|------------------------------------------- +| cpu | Obtains information about the CPU +| find | Provides support for finding files etc. +| node | Minimal polyfills for Node.js builtins +| options | Support for command line options parsing +| terminal | Provides support for terminal colors +| text | Utility for text processing +| web | Minimal polyfills for browser builtins + +It is possible to reuse the utility in your own project like so: + +```ts +import { ... } from "assemblyscript/util/terminal.js"; +... +``` + +Keep in mind, however, that utility can change at any time. diff --git a/util/browser/fs.js b/util/browser/fs.js new file mode 100644 index 0000000000..1339856fa2 --- /dev/null +++ b/util/browser/fs.js @@ -0,0 +1 @@ +export const promises = {}; diff --git a/util/browser/module.js b/util/browser/module.js new file mode 100644 index 0000000000..88cb1de288 --- /dev/null +++ b/util/browser/module.js @@ -0,0 +1,5 @@ +export function createRequire() { + return function require(path) { + throw new Error(`Cannot find module: '${path}'`); + }; +} diff --git a/util/browser/path.js b/util/browser/path.js new file mode 100644 index 0000000000..113b4b08dd --- /dev/null +++ b/util/browser/path.js @@ -0,0 +1,520 @@ +import * as process from "./process.js"; + +// https://github.com/browserify/path-browserify v1.0.1 +// +// Copyright (c) 2013 James Halliday +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); + } +} + +// Resolves . and .. elements in a path with directory names +function normalizeStringPosix(path, allowAboveRoot) { + var res = ''; + var lastSegmentLength = 0; + var lastSlash = -1; + var dots = 0; + var code; + for (var i = 0; i <= path.length; ++i) { + if (i < path.length) + code = path.charCodeAt(i); + else if (code === 47 /*/*/) + break; + else + code = 47 /*/*/; + if (code === 47 /*/*/) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { + if (res.length > 2) { + var lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) + res += '/..'; + else + res = '..'; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) + res += '/' + path.slice(lastSlash + 1, i); + else + res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +function _format(sep, pathObject) { + var dir = pathObject.dir || pathObject.root; + var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); + if (!dir) { + return base; + } + if (dir === pathObject.root) { + return dir + base; + } + return dir + sep + base; +} + +// path.resolve([from ...], to) +export function resolve() { + var resolvedPath = ''; + var resolvedAbsolute = false; + var cwd; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path; + if (i >= 0) + path = arguments[i]; + else { + if (cwd === undefined) + cwd = process.cwd(); + path = cwd; + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) + return '/' + resolvedPath; + else + return '/'; + } else if (resolvedPath.length > 0) { + return resolvedPath; + } else { + return '.'; + } +} + +export function normalize(path) { + assertPath(path); + + if (path.length === 0) return '.'; + + var isAbsolute = path.charCodeAt(0) === 47 /*/*/; + var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; + + // Normalize the path + path = normalizeStringPosix(path, !isAbsolute); + + if (path.length === 0 && !isAbsolute) path = '.'; + if (path.length > 0 && trailingSeparator) path += '/'; + + if (isAbsolute) return '/' + path; + return path; +} + +export function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; +} + +export function join() { + if (arguments.length === 0) + return '.'; + var joined; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === undefined) + joined = arg; + else + joined += '/' + arg; + } + } + if (joined === undefined) + return '.'; + return normalize(joined); +} + +export function relative(from, to) { + assertPath(from); + assertPath(to); + + if (from === to) return ''; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ''; + + if (from === ".") return to; // FIX for 'odule.ts' (see issue #1398) + + // Trim any leading backslashes + var fromStart = 1; + for (; fromStart < from.length; ++fromStart) { + if (from.charCodeAt(fromStart) !== 47 /*/*/) + break; + } + var fromEnd = from.length; + var fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + var toStart = 1; + for (; toStart < to.length; ++toStart) { + if (to.charCodeAt(toStart) !== 47 /*/*/) + break; + } + var toEnd = to.length; + var toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + var length = fromLen < toLen ? fromLen : toLen; + var lastCommonSep = -1; + var i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47 /*/*/) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47 /*/*/) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + var fromCode = from.charCodeAt(fromStart + i); + var toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) + break; + else if (fromCode === 47 /*/*/) + lastCommonSep = i; + } + + var out = ''; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { + if (out.length === 0) + out += '..'; + else + out += '/..'; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) + return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47 /*/*/) + ++toStart; + return to.slice(toStart); + } +} + +export function dirname(path) { + assertPath(path); + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) return '//'; + return path.slice(0, end); +} + +export function basename(path, ext) { + if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); + assertPath(path); + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ''; + var extIdx = ext.length - 1; + var firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); + } +} + +export function extname(path) { + assertPath(path); + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); +} + +export function format(pathObject) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); + } + return _format('/', pathObject); +} + +export function parse(path) { + assertPath(path); + + var ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) return ret; + var code = path.charCodeAt(0); + var isAbsolute = code === 47 /*/*/; + var start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } else { + start = 0; + } + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + var i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; + + return ret; +} + +export const sep = '/'; +export const delimiter = ':'; +export const win32 = null; diff --git a/cli/shim/process.js b/util/browser/process.js similarity index 78% rename from cli/shim/process.js rename to util/browser/process.js index 91489f31b0..c0bd36494f 100644 --- a/cli/shim/process.js +++ b/util/browser/process.js @@ -1,17 +1,18 @@ -module.exports = { - platform: "linux", - cwd() { - return "."; - }, - umask() { - return 0; - }, - hrtime, - argv: [], - exit(code = 0) { - throw Error(`exit ${code}`); - } -}; +export const platform = "linux"; + +export function cwd() { + return "."; +} + +export function umask() { + return 0; +} + +export const argv = []; + +export function exit(code = 0) { + throw Error(`exit ${code}`); +} // https://github.com/kumavis/browser-process-hrtime v1.0.0 // @@ -39,16 +40,10 @@ module.exports = { // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -var performance = global.performance || {}; -var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime(); }; +var performance = globalThis.performance || {}; +var performanceNow = performance.now || function() { return new Date().getTime(); }; -function hrtime(previousTimestamp) { +export function hrtime(previousTimestamp) { var clocktime = performanceNow.call(performance); var seconds = Math.floor(clocktime * 1e-3); var nanoseconds = Math.floor(clocktime * 1e6 - seconds * 1e9); diff --git a/util/browser/url.js b/util/browser/url.js new file mode 100644 index 0000000000..a8297255c2 --- /dev/null +++ b/util/browser/url.js @@ -0,0 +1,23 @@ +import * as path from "./path.js"; + +function encodePathChars(filepath) { + return filepath + .replace(/%/g, "%25") + .replace(/\\/g, "%5C") + .replace(/\n/g, "%0A") + .replace(/\r/g, "%0D") + .replace(/\t/g, "%09"); +} + +export function pathToFileURL(filepath) { + let resolved = path.resolve(filepath); + if ( + filepath.charCodeAt(filepath.length - 1) === /* SLASH */ 47 && + resolved[resolved.length - 1] !== path.sep + ) { + resolved += "/"; + } + const url = new URL("file://"); + url.pathname = encodePathChars(resolved); + return url; +} diff --git a/util/cpu.d.ts b/util/cpu.d.ts new file mode 100644 index 0000000000..0d77616017 --- /dev/null +++ b/util/cpu.d.ts @@ -0,0 +1,9 @@ +/** + * @fileoverview CPU utility definitions. + * @license Apache-2.0 + */ + +/** Number of threads. */ +export const threadCount: number; +/** Number of cores. */ +export const coreCount: number; diff --git a/util/cpu.js b/util/cpu.js new file mode 100644 index 0000000000..0f140e3d0e --- /dev/null +++ b/util/cpu.js @@ -0,0 +1,42 @@ +/** + * @fileoverview CPU utility. + * @license Apache-2.0 + */ + +// https://www.npmjs.com/package/physical-cpu-count + +import os from "os"; +import childProcess from "child_process"; + +const cpus = os.cpus(); + +function exec(command) { + return childProcess.execSync(command, {encoding: 'utf8'}); +} + +var coreCount; + +const platform = os.platform(); +if (platform === "linux") { + const output = exec("lscpu -p | egrep -v \"^#\" | sort -u -t, -k 2,4 | wc -l"); + coreCount = parseInt(output.trim(), 10); +} else if (platform === "darwin") { + const output = exec("sysctl -n hw.physicalcpu_max"); + coreCount = parseInt(output.trim(), 10); +} else if (platform === "windows") { + const output = exec("WMIC CPU Get NumberOfCores"); + coreCount = output.split(os.EOL) + .map(line => parseInt(line)) + .filter(value => !isNaN(value)) + .reduce((sum, number) => sum + number, 0); +} else { + const cores = cpus.filter(function (cpu, index) { + const hasHyperthreading = cpu.model.includes("Intel"); + const isOdd = index % 2 === 1; + return !hasHyperthreading || isOdd; + }); + coreCount = cores.length; +} + +export const threadCount = cpus.length; +export { coreCount }; diff --git a/util/find.d.ts b/util/find.d.ts new file mode 100644 index 0000000000..5d7e219abb --- /dev/null +++ b/util/find.d.ts @@ -0,0 +1,6 @@ +/** + * @fileoverview File finding utility definitions. + * @license Apache-2.0 + */ + +export function findFiles(dirname: string, filter?: ((name: string) => boolean) | RegExp): string[]; diff --git a/cli/util/find.js b/util/find.js similarity index 78% rename from cli/util/find.js rename to util/find.js index 57230109a7..8e1ed7881e 100644 --- a/cli/util/find.js +++ b/util/find.js @@ -3,10 +3,9 @@ * @license Apache-2.0 */ -const fs = require("fs"); -const path = require("path"); +import { fs, path } from "./node.js"; -function findFiles(dirname, filter) { +export function findFiles(dirname, filter) { var out = []; fs.readdirSync(dirname).forEach(name => { if (fs.statSync(path.join(dirname, name)).isDirectory()) { @@ -18,4 +17,4 @@ function findFiles(dirname, filter) { return out; } -exports.files = findFiles; +export default findFiles; diff --git a/util/node.d.ts b/util/node.d.ts new file mode 100644 index 0000000000..25575020ff --- /dev/null +++ b/util/node.d.ts @@ -0,0 +1,21 @@ +/** + * @fileoverview Node polyfill definitions. + * @license Apache-2.0 + */ + +import fs from "fs"; +import module from "module"; +import path from "path"; +import process from "process"; +import url from "url"; + +/** Whether the environment is Node.js. */ +export const isNode: boolean; + +export { + fs, + module, + path, + process, + url +}; diff --git a/util/node.js b/util/node.js new file mode 100644 index 0000000000..29953de11b --- /dev/null +++ b/util/node.js @@ -0,0 +1,34 @@ +/** + * @fileoverview Node.js polyfills. + * @license Apache-2.0 + */ + +export const isNode = Object.prototype.toString.call(typeof globalThis.process !== 'undefined' ? globalThis.process : 0) === '[object process]'; + +var fs; +var module; +var path; +var process; +var url; + +if (isNode) { + fs = await import("fs"); + module = await import("module"); + path = await import("path"); + process = globalThis.process; + url = await import("url"); +} else { + fs = await import("./browser/fs.js"); + module = await import("./browser/module.js"); + path = await import("./browser/path.js"); + process = await import("./browser/process.js"); + url = await import("./browser/url.js"); +} + +export { + fs, + module, + path, + process, + url +}; diff --git a/cli/util/options.d.ts b/util/options.d.ts similarity index 92% rename from cli/util/options.d.ts rename to util/options.d.ts index 6a727628e9..facc36d622 100644 --- a/cli/util/options.d.ts +++ b/util/options.d.ts @@ -25,12 +25,12 @@ export interface OptionDescription { } /** Configuration object. */ -interface Config { +export interface Config { [key: string]: OptionDescription; } /** Parsing result. */ -interface Result { +export interface Result { /** Parsed options. */ options: OptionSet, /** Unknown options. */ @@ -45,7 +45,7 @@ interface Result { export function parse(argv: string[], config: Config, propagateDefaults?: boolean): Result; /** Help formatting options. */ -interface HelpOptions { +export interface HelpOptions { /** Leading indent. Defaults to 2. */ indent?: number, /** Table padding. Defaults to 24. */ @@ -60,6 +60,9 @@ export function help(config: Config, options?: HelpOptions): string; /** Merges two sets of options into one, preferring the current over the parent set. */ export function merge(config: Config, currentOptions: OptionSet, parentOptions: OptionSet, parentBaseDir: string): OptionSet; +/** Normalizes a path. */ +export function normalizePath(path: string): string; + /** Resolves a single relative path. Keeps absolute paths, otherwise prepends baseDir. */ export function resolvePath(path: string, baseDir: string, useNodeResolution?: boolean): string; diff --git a/cli/util/options.js b/util/options.js similarity index 90% rename from cli/util/options.js rename to util/options.js index c4159fec27..d0633b19e2 100644 --- a/cli/util/options.js +++ b/util/options.js @@ -3,8 +3,10 @@ * @license Apache-2.0 */ -const path = require("path"); -const colorsUtil = require("./colors"); +import { path, module } from "./node.js"; +import { stdoutColors } from "./terminal.js"; + +const require = module.createRequire(import.meta.url); // type | meaning // -----|--------------- @@ -17,7 +19,7 @@ const colorsUtil = require("./colors"); // S | string array /** Parses the specified command line arguments according to the given configuration. */ -function parse(argv, config, propagateDefaults = true) { +export function parse(argv, config, propagateDefaults = true) { var options = {}; var unknown = []; var args = []; @@ -93,10 +95,8 @@ function parse(argv, config, propagateDefaults = true) { return { options, unknown, arguments: args, trailing }; } -exports.parse = parse; - /** Generates the help text for the specified configuration. */ -function help(config, options) { +export function help(config, options) { if (!options) options = {}; var indent = options.indent || 2; var padding = options.padding || 24; @@ -130,18 +130,16 @@ function help(config, options) { var hasCategories = false; Object.keys(sbCategories).forEach(category => { hasCategories = true; - sb.push(eol + " " + colorsUtil.gray(category) + eol); + sb.push(eol + " " + stdoutColors.gray(category) + eol); sb.push(sbCategories[category].join(eol)); }); - if (hasCategories) { - sb.push(eol + " " + colorsUtil.gray("Other") + eol); + if (hasCategories && sbOther.length) { + sb.push(eol + " " + stdoutColors.gray("Other") + eol); } sb.push(sbOther.join(eol)); return sb.join(eol); } -exports.help = help; - /** Sanitizes an option value to be a valid value of the option's type. */ function sanitizeValue(value, type) { if (value != null) { @@ -172,7 +170,7 @@ function sanitizeValue(value, type) { } /** Merges two sets of options into one, preferring the current over the parent set. */ -function merge(config, currentOptions, parentOptions, parentBaseDir) { +export function merge(config, currentOptions, parentOptions, parentBaseDir) { const mergedOptions = {}; for (const [key, { type, mutuallyExclusive, isPath, useNodeResolution, cliOnly }] of Object.entries(config)) { let currentValue = sanitizeValue(currentOptions[key], type); @@ -235,9 +233,8 @@ function merge(config, currentOptions, parentOptions, parentBaseDir) { return mergedOptions; } -exports.merge = merge; - -function normalizePath(p) { +/** Normalizes a path. */ +export function normalizePath(p) { const parsed = path.parse(p); if (!parsed.root) { parsed.root = "./"; @@ -245,30 +242,20 @@ function normalizePath(p) { return path.format(parsed); } -exports.normalizePath = normalizePath; - -const dynrequire = typeof __webpack_require__ === "function" - ? __non_webpack_require__ - : require; - /** Resolves a single possibly relative path. Keeps absolute paths, otherwise prepends baseDir. */ -function resolvePath(p, baseDir, useNodeResolution = false) { +export function resolvePath(p, baseDir, useNodeResolution = false) { if (path.isAbsolute(p)) return p; - if (useNodeResolution && !p.startsWith(".")) { - return dynrequire.resolve(p, { paths: [ baseDir ] }); + if (useNodeResolution && !p.startsWith(".") && require.resolve) { + return require.resolve(p, { paths: [ baseDir ] }); } return normalizePath(path.join(baseDir, p)); } -exports.resolvePath = resolvePath; - /** Populates default values on a parsed options result. */ -function addDefaults(config, options) { +export function addDefaults(config, options) { for (const [key, { default: defaultValue }] of Object.entries(config)) { if (options[key] == null && defaultValue != null) { options[key] = defaultValue; } } } - -exports.addDefaults = addDefaults; diff --git a/util/terminal.d.ts b/util/terminal.d.ts new file mode 100644 index 0000000000..2adc19bde2 --- /dev/null +++ b/util/terminal.d.ts @@ -0,0 +1,52 @@ +/** + * @fileoverview Terminal colors utility definitions. + * @license Apache-2.0 + */ + +/** Color code for gray. */ +export const GRAY: string; +/** Color code for red. */ +export const RED: string; +/** Color code for green. */ +export const GREEN: string; +/** Color code for yellow. */ +export const YELLOW: string; +/** Color code for blue. */ +export const BLUE: string; +/** Color code for magenta. */ +export const MAGENTA: string; +/** Color code for cyan. */ +export const CYAN: string; +/** Color code for white. */ +export const WHITE: string; +/** Code to reset any colors. */ +export const RESET: string; + +/** Color utility class. */ +export class Colors { + /** Constructs a new instance for the given stream. */ + constructor(stream: { isTTY: boolean }); + /** Whether terminal colors are enabled. */ + enabled: boolean; + /** Colors a string in gray if {@link enabled}. */ + gray(text: string): string; + /** Colors a string in red if {@link enabled}. */ + red(text: string): string; + /** Colors a string in green if {@link enabled}. */ + green(text: string): string; + /** Colors a string in yellow if {@link enabled}. */ + yellow(text: string): string; + /** Colors a string in blue if {@link enabled}. */ + blue(text: string): string; + /** Colors a string in magenta if {@link enabled}. */ + magenta(text: string): string; + /** Colors a string in cyan if {@link enabled}. */ + cyan(text: string): string; + /** Colors a string in white if {@link enabled}. */ + white(text: string): string; +} + +/** Color utility for stdout. */ +export const stdoutColors: Colors; +/** Color utility for stderr. */ +export const stderrColors: Colors; diff --git a/util/terminal.js b/util/terminal.js new file mode 100644 index 0000000000..93ceee94ee --- /dev/null +++ b/util/terminal.js @@ -0,0 +1,35 @@ +/** + * @fileoverview Terminal utility. + * @license Apache-2.0 + */ + +var proc = typeof process !== "undefined" && process || {}; +var isCI = proc.env && "CI" in proc.env; + +export const GRAY = "\u001b[90m"; +export const RED = "\u001b[91m"; +export const GREEN = "\u001b[92m"; +export const YELLOW = "\u001b[93m"; +export const BLUE = "\u001b[94m"; +export const MAGENTA = "\u001b[95m"; +export const CYAN = "\u001b[96m"; +export const WHITE = "\u001b[97m"; +export const RESET = "\u001b[0m"; + +export class Colors { + constructor(stream) { + this.stream = stream; + this.enabled = Boolean((this.stream && this.stream.isTTY) || isCI); + } + gray(text) { return this.enabled ? GRAY + text + RESET : text; } + red(text) { return this.enabled ? RED + text + RESET : text; } + green(text) { return this.enabled ? GREEN + text + RESET : text; } + yellow(text) { return this.enabled ? YELLOW + text + RESET : text; } + blue(text) { return this.enabled ? BLUE + text + RESET : text; } + magenta(text) { return this.enabled ? MAGENTA + text + RESET : text; } + cyan(text) { return this.enabled ? CYAN + text + RESET : text; } + white(text) { return this.enabled ? WHITE + text + RESET : text; } +} + +export const stdoutColors = new Colors(proc.stdout); +export const stderrColors = new Colors(proc.stderr); diff --git a/util/text.d.ts b/util/text.d.ts new file mode 100644 index 0000000000..d2eec9e27c --- /dev/null +++ b/util/text.d.ts @@ -0,0 +1,26 @@ +/** + * @fileoverview Text utility definitions. + * @license Apache-2.0 + */ + +/** Calculates the UTF-8 byte length of a string. */ +export function utf8Length(string: string): number; + +/** Reads UTF-8 bytes as a string. */ +export function utf8Read(buffer: Uint8Array, start: number, end: number): string; + +/** Writes a string as UTF-8 bytes. */ +export function utf8Write(string: string, buffer: Uint8Array, offset: number): number; + +/** UTF-8 utility. */ +export const utf8: { + /** Calculates the UTF8 byte length of a string. */ + length: typeof utf8Length; + /** Reads UTF8 bytes as a string. */ + read: typeof utf8Read; + /** Writes a string as UTF8 bytes. */ + write: typeof utf8Write; +}; + +/** Computes the difference between an expected and its actual text. */ +export function diff(filename: string, expected: string, actual: string): string; diff --git a/util/text.js b/util/text.js new file mode 100644 index 0000000000..b7accf9f5a --- /dev/null +++ b/util/text.js @@ -0,0 +1,114 @@ +/** + * @fileoverview Text utility. + * @license Apache-2.0 + */ + +import * as Diff from "diff"; +import { stdoutColors } from "./terminal.js"; + +export function utf8Length(string) { + var len = 0; + for (var i = 0, k = string.length; i < k; ++i) { + let c = string.charCodeAt(i); + if (c < 128) { + len += 1; + } else if (c < 2048) { + len += 2; + } else if ((c & 0xFC00) === 0xD800 && i + 1 < k && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { + ++i; + len += 4; + } else { + len += 3; + } + } + return len; +} + +export function utf8Read(buffer, start, end) { + var len = end - start; + if (len < 1) return ""; + var parts = null, + chunk = [], + i = 0, // char offset + t; // temporary + while (start < end) { + t = buffer[start++]; + if (t < 128) { + chunk[i++] = t; + } else if (t > 191 && t < 224) { + chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; + } else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } else { + chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + } + if (i >= 8192) { + (parts || (parts = [])).push(String.fromCharCode(...chunk)); + i = 0; + } + } + if (parts) { + if (i) parts.push(String.fromCharCode(...chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode(...chunk.slice(0, i)); +} + +export function utf8Write(string, buffer, offset) { + var start = offset; + for (var i = 0, k = string.length; i < k; ++i) { + let c1 = string.charCodeAt(i), c2; + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < k && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { + c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return offset - start; +} + +export const utf8 = { + length: utf8Length, + read: utf8Read, + write: utf8Write +}; + +export function diff(filename, expected, actual) { + const diff = Diff.structuredPatch(filename, filename, expected, actual, "expected", "actual", { context: 5 }); + if (!diff.hunks.length) return null; + + const out = [ + '--- ' + diff.oldHeader, + '+++ ' + diff.newHeader + ]; + for (const hunk of diff.hunks) { + out.push( + '@@ -' + hunk.oldStart + ',' + hunk.oldLines + + ' +' + hunk.newStart + ',' + hunk.newLines + + ' @@' + ); + out.push(...hunk.lines.map(line => + line.charAt(0) === "+" + ? stdoutColors.green(line) + : line.charAt(0) === "-" + ? line = stdoutColors.red(line) + : line + )); + } + + return out.join('\n') + '\n'; +} diff --git a/lib/parse/src/tsconfig.json b/util/tsconfig.json similarity index 50% rename from lib/parse/src/tsconfig.json rename to util/tsconfig.json index 6aaa787469..36ec54edc7 100644 --- a/lib/parse/src/tsconfig.json +++ b/util/tsconfig.json @@ -1,6 +1,7 @@ { + "extends": "../tsconfig-base.json", "compilerOptions": { - "module": "commonjs" + "esModuleInterop": true }, "include": [ "./**/*.ts" diff --git a/util/web.d.ts b/util/web.d.ts new file mode 100644 index 0000000000..4433ca2315 --- /dev/null +++ b/util/web.d.ts @@ -0,0 +1,11 @@ +/** + * @fileoverview Web polyfill definitions. + * @license Apache-2.0 + */ + +/** Fetches a file. */ +export function fetch(url: string): Promise<{ + arrayBuffer(): Promise; + text(): Promise; + json(): Promise; // eslint-disable-line @typescript-eslint/no-explicit-any +}>; diff --git a/util/web.js b/util/web.js new file mode 100644 index 0000000000..1cddb1c355 --- /dev/null +++ b/util/web.js @@ -0,0 +1,33 @@ +/** + * @fileoverview Web polyfills. + * @license Apache-2.0 + */ + +import { fs } from "./node.js"; + +var _fetch = typeof fetch === "function" ? fetch : + url => new Promise((resolve, reject) => { // eslint-disable-line no-global-assign + fs.readFile(url, (err, data) => { + if (err) reject(err); + resolve({ + arrayBuffer() { + let offset = data.byteOffset; + return Promise.resolve(data.buffer.slice(offset, offset + data.byteLength)); + }, + text() { + return Promise.resolve(data.toString()); + }, + json() { + try { + return Promise.resolve(JSON.parse(data.toString())); + } catch (err) { + return Promise.reject(err); + } + } + }); + }); + }); + +export { + _fetch as fetch +}; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index a3775f9d53..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,135 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const webpack = require("webpack"); -const TerserPlugin = require('terser-webpack-plugin'); - -function preamble(name) { - return [ - "/**", - " * @license", - " * " + name, - " * Copyright Daniel Wirtz / The AssemblyScript Authors.", - " * SPDX-License-Identifier: Apache-2.0", - " */" - ].join("\n"); -} - -// Build the C-like library -const lib = { - mode: "production", - target: ["web", "es6"], - entry: [ "./src/glue/js", "./src/index.ts" ], - module: { - rules: [ - { - test: /\.ts$/, - use: "ts-loader", - exclude: /node_modules/ - } - ] - }, - externals: [ - "binaryen" - ], - resolve: { - extensions: [ ".ts", ".js" ] - }, - output: { - filename: "assemblyscript.js", - path: path.resolve(__dirname, "dist"), - library: "assemblyscript", - libraryTarget: "umd", - globalObject: "typeof self !== 'undefined' ? self : this", - hashFunction: "xxhash64" - }, - devtool: "source-map", - performance: { - hints : false - }, - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - preamble: preamble("The AssemblyScript Compiler.") - } - }, - parallel: true, - extractComments: false - }) - ], - } -}; - -// Build asc for browser usage -const shimDir = path.join(__dirname, "cli", "shim"); -const bin = { - mode: "production", - target: ["web", "es6"], - context: path.join(__dirname, "cli"), - entry: [ "./asc.js" ], - externals: [ - "binaryen", - "assemblyscript" - ], - node: { - global: true - }, - output: { - filename: "asc.js", - path: path.resolve(__dirname, "dist"), - library: "asc", - libraryTarget: "umd", - globalObject: "typeof self !== 'undefined' ? self : this", - hashFunction: "xxhash64" - }, - devtool: "source-map", - performance: { - hints : false - }, - plugins: [ - new webpack.DefinePlugin({ - BUNDLE_VERSION: JSON.stringify(require("./package.json").version), - BUNDLE_LIBRARY: (() => { - const libDir = path.join(__dirname, "std", "assembly"); - const libFiles = require("glob").sync("**/!(*.d).ts", { cwd: libDir }); - const lib = {}; - libFiles.forEach(file => lib[file.replace(/\.ts$/, "")] = bundleFile(path.join(libDir, file))); - return lib; - })(), - BUNDLE_DEFINITIONS: { - "assembly": bundleFile(path.join(__dirname, "std", "assembly", "index.d.ts")), - "portable": bundleFile(path.join(__dirname, "std", "portable", "index.d.ts")) - }, - __dirname: JSON.stringify(".") - }), - - // Browser shims - new webpack.NormalModuleReplacementPlugin(/^path$/, path.join(shimDir, "path")), - new webpack.NormalModuleReplacementPlugin(/^process$/, path.join(shimDir, "process")), - new webpack.NormalModuleReplacementPlugin(/^fs$/, path.join(shimDir, "fs")) - ], - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - preamble: preamble("The AssemblyScript Compiler Frontend.") - } - }, - parallel: true, - extractComments: false - }) - ], - } -}; - -function bundleFile(filename) { - return JSON.stringify(fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n")); -} - -module.exports = [ lib, bin ];